我在HTML页面中有一些已知的格式,我需要解析标签的内容
<TR>
<TD align=center>Reissue of:</TD>
<TD align=center> **VALUES_TO_FIND** </TD>
<TD> </TD>
</TR>
<TR>
<TD align=center> </TD>
</TR>
基本上我认为我可以将HTML与正则表达式连接起来,该正则表达式将匹配我正在寻找的位置内的任何内容。
我知道VALUES_TO_FIND之前和之后的文本将始终相同。如何使用RE找到它? (我正在处理几个案例,格式可以在页面的几个地方重复。
答案 0 :(得分:1)
这就是你要找的东西:
import re
s="""
<TR>
<TD align=center>Reissue of:</TD>
<TD align=center> **VALUES_TO_FIND** </TD>
<TD> </TD>
</TR>
"""
p="""
<TR>
<TD align=center>Reissue of:</TD>
<TD align=center>(.*)</TD>
<TD> </TD>
</TR>
"""
m=re.search(p, s)
print m.group(1)
答案 1 :(得分:0)
不要使用正则表达式来解析HTML(它不是常规语言)。 stackoverflow上的主题有很多主题。
我建议您使用:BeautifulSoup,Pattern和类似模块。
答案 2 :(得分:0)
这个正则表达式将执行:
re.findall(r'<TR>\s+<TD.+?</TD>\s+<TD align=center>(.*?)</TD>',html,re.DOTALL)
但我建议使用解析器。
答案 3 :(得分:0)
从正常表达式中获取HTML数据有很多更好的选择。例如,尝试Scrapy。
答案 4 :(得分:0)
HTML不是常规语言,使用正则表达式来处理它很困难。
BeautifulSoup是一个很好的解析器,这里有一个如何使用它的例子:
from BeautifulSoup import BeautifulSoup
html = u'''
<TR>
<TD align=center>Reissue of:</TD>
<TD align=center> **VALUES_TO_FIND** </TD>
<TD> </TD>
</TR>
<TR>
<TD align=center> </TD>
</TR>'''
bs = BeautifulSoup(html)
print [td.contents for td in bs.findAll('td')]
输出:
[[u'Reissue of:'], [u' **VALUES_TO_FIND** '], [u' '], [u' ']]
你知道该怎么做。 :)
使用pip install BeautifulSoup
安装。以下是文档:
http://www.crummy.com/software/BeautifulSoup/bs3/documentation.html