我让这个简单的项目过于复杂,但我想了解更多关于Python的知识,所以我想到了这个简单的应用程序,它涉及根据google showtimes上列出的电影刮取所有当前电影的电影时间。 / p>
该位置无关紧要,因为它可以播放所有当前的电影。我有代码废弃<span class=info></span>
标签中的所有数据,但它显然提取了电影的长度以及大量其他html数据。我只想看电影时间。
我假设只提取电影时间,我需要某种正则表达式。
以下是文本信息的哪一部分的小片段
<span class=info>‎2hr 3min‎‎ - Rated PG-13
我需要时间和分钟,没有别的。从这一行文本中解析这些数据的最佳方法是什么?
答案 0 :(得分:0)
你可以在这里使用正则表达式,是的。当您提取标记文本时,BeautifulSoup将为您提供unicode值:
>>> soup = BeautifulSoup('''<span class=info>‎2hr 3min‎‎ - Rated PG-13''')
>>> soup.span.get_text()
u'\u200e2hr 3min\u200e\u200e - Rated PG-13'
U+200e LEFT-TO-RIGHT MARK codepoints可以忽略,正则表达式可以很容易地选出时间:
import re
time_pattern = re.compile(r'(\d+)hr\s*(\d+)min')
hours, minutes = time_pattern.search(soup.span.get_text()).groups()
两个\d+
组分别匹配数字,后跟hr
和min
文本,用空格分隔。
这会产生:
>>> time_pattern = re.compile(r'(\d+)hr\s*(\d+)min')
>>> hours, minutes = time_pattern.search(soup.span.get_text()).groups()
>>> hours
u'2'
>>> minutes
u'3'