用Python解析HTML正则表达式
我是使用Python Regex的新手。我试图从HTML中提取一些数据,并且不确定正确的语法是否正确地执行此操作用Python解析HTML正则表达式
我得到以下数据,我想提取数据Birthdate ='1969年7月4日',家乡=“马队领,新泽西州”,学院=“宾夕法尼亚州立大学,1991年”,研究生=“弗吉尼亚州,1996年”
data = <b>Birthdate:</b> July 4, 1969<br/><b>Hometown:</b> Colts Neck, N.J.<br/><b>College:</b> Penn State, 1991<br/><b>Post-graduate:</b> Virginia, 1996</td></tr></table>
Birthdate = re.findall(r'<b>Birthdate:</b>(.*)<br/>', data)
Hometown = re.findall(r'<b>Hometown:></b>(.*)<br/>', data)
College = re.findall(r'<b>College:</b>(.*)<br/>, data)
Post-graduate = re.findall(r,<b>Post-graduate:</b>(.*)<td/>, data)
诚然,我没有使用re.findall或通配符(.*)
正常这里是因为我得到一个返回的字符串,该字符串以我想要的值开始,并到达数据末尾,最后一个
标记。我想使用一个函数来在这个例子中定义 (.*)
的模式之间拉取数据。
如果你想使用regex
,那么你可以考虑这个,
>>> import re
>>> s = '''data = <b>Birthdate:</b> July 4, 1969<br/><b>Hometown:</b> Colts Neck, N.J.<br/><b>College:</b> Penn State, 1991<br/><b>Post-graduate:</b> Virginia, 1996</td></tr></table>'''
>>> dict(re.findall(r'<b>([^:]*):</b> *([^<]*)', s))
{'Hometown': 'Colts Neck, N.J.', 'Birthdate': 'July 4, 1969', 'College': 'Penn State, 1991', 'Post-graduate': 'Virginia, 1996'}
谢谢你的帮助。这refindall和转换为字典完美的工作,我需要做的。有什么更好的库可以用于未来的这种类型的解析? – 2015-04-02 01:48:36
将来使用BeautifulSoup解析器。 – 2015-04-02 01:58:38
来吧,有很多HTML解析器的在那里。不要为此使用正则表达式。 – n0rd 2015-04-02 01:26:09
选择一个html解析器。正则表达式注定了浏览器不得不工作的非标准HTML。如果您选择的解析器不起作用,请参阅“整理”,作为过滤器。 – 2015-04-02 01:30:35