美丽的汤问题

时间:2011-01-11 14:33:12

标签: python html-parsing beautifulsoup

我想在HTML文档中获取特定行

行具有以下属性集:bgcolor和vallign

以下是HTML表格的摘录:

<table>
   <tbody>
      <tr bgcolor="#f01234" valign="top">
        <!--- td's follow ... -->
      </tr>
      <tr bgcolor="#c01234" valign="top">
        <!--- td's follow ... -->
      </tr>
   </tbody>
</table>

我已经快速了解了BS's documentation。不清楚传递给findAll的params是否匹配我想要的行。

有没有人知道找到所有()的tp bass来匹配我想要的行?

2 个答案:

答案 0 :(得分:5)

不要使用正则表达式来解析html。使用html解析器

import lxml.html
doc = lxml.html.fromstring(your_html)
result = doc.xpath("//tr[(@bgcolor='#f01234' or @bgcolor='#c01234') "
    "and @valign='top']")
print result

那将从你的html中提取所有匹配的tr元素,你可以用它们进行进一步的操作,如更改文本,属性值,提取,进一步搜索......

强制性链接:

RegEx match open tags except XHTML self-contained tags

答案 1 :(得分:4)

这样的东西
  

soup.findAll('tr',attrs = {'bgcolor':   re.compile(R '#f01234 |#c01234'),   'valign':'top'})