0

我在 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 找到它?(我正在处理几种情况,格式可以在页面的多个位置重复。

4

5 回答 5

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)
于 2012-07-02T15:09:39.397 回答
0

不要使用正则表达式来解析 HTML(它不是正则语言)。stackoverflow 上有很多关于该主题的主题。

我推荐你使用:BeautifulSoup、Pattern 和类似的模块。

于 2012-07-02T11:56:40.307 回答
0

此正则表达式将执行以下操作:

re.findall(r'<TR>\s+<TD.+?</TD>\s+<TD align=center>(.*?)</TD>',html,re.DOTALL)

但我建议使用解析器。

于 2012-07-02T11:58:38.653 回答
0

从 HTML 中获取数据有很多比正则表达式更好的选择。例如,试试Scrapy

于 2012-07-02T12:39:21.530 回答
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

于 2012-07-02T13:49:25.723 回答