【发布时间】:2013-08-16 03:19:34
【问题描述】:
我目前正在使用 Python 和 BeautifulSoup 来抓取一些网站数据。 我正在尝试从格式如下的表格中提取单元格:
<tr><td>1<td><td>20<td>5%</td></td></td></td></tr>
上述 HTML 的问题在于 BeautifulSoup 将其作为一个标签来读取。我需要从第一个 <td> 和第三个 <td> 中提取值,它们分别是 1 和 20。
不幸的是,我不知道该怎么做。如何让 BeautifulSoup 读取表格每一行的第一个和第三个 <td> 标签?
更新:
我发现了问题所在。我使用 html.parser 而不是 BeautifulSoup 的默认值。一旦我切换到默认值,问题就消失了。我也使用了答案中列出的方法。
我还发现,不同的解析器对损坏的代码非常敏感。例如,默认解析器拒绝读取第 192 行,但 html5lib 完成了这项工作。因此,如果您在解析整个表时遇到问题,请尝试使用 lxml、html 和 html5lib。
【问题讨论】:
标签: python html html-table beautifulsoup html-parsing