在[Python] <table> </table>中查找所有TR(来自html)

时间:2012-12-11 15:49:05

标签: python regex html-parsing

我希望得到我所有的内容。 我写了这段代码:

matchObj = re.search(r'<tr>(.*?)</tr>', txt, re.M|re.I|re.S)

但我只得到了第一组。

我如何获得所有团体?

提前致谢:)

2 个答案:

答案 0 :(得分:8)

findall

matchObj = re.findall(r'<tr>(.*?)</tr>', txt, re.M|re.I|re.S)

search只找到给定字符串中的第一个。

您可以在regex中了解有关可以使用的不同方法的更多信息。

然而,看起来你正在解析HTML。为什么不使用HTMl parser

答案 1 :(得分:3)

要使用re.findall()获得多个匹配项。

然而,使用正则表达式来解析HTML将变得非常丑陋和复杂。改为使用正确的HTML解析器。

Python有几个可供选择:

ElementTree示例:

from xml.etree import ElementTree

tree = ElementTree.parse('filename.html')
for elem in tree.findall('tr'):
    print ElementTree.tostring(elem)

BeautifulSoup示例:

from bs4 import BeautifulSoup

soup = BeautifulSoup(open('filename.html'))
for row in soup.select('table tr'):
    print row