python – 如何从BeautifulSoup的表中获取第一个和第三个td?

前端之家收集整理的这篇文章主要介绍了python – 如何从BeautifulSoup的表中获取第一个和第三个td?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我目前正在使用Python和BeautifulSoup来抓取一些网站数据.
我正在尝试从表格中拉出单元格,格式如下:

上述HTML的问题在于BeautifulSoup将其作为一个标记读取.我需要从第一个< td>中提取值.和第三个< td>,分别为1和20.

不幸的是,我不知道如何解决这个问题.如何让BeautifulSoup阅读第1和第3< td>表格每行的标签

更新:

解决了这个问题.我使用的是html.parser而不是BeautifulSoup的默认值.一旦我切换到默认值,问题就消失了.我也使用了答案中列出的方法.

我还发现不同的解析器非常具有破坏代码的气质.例如,默认解析器拒绝读取第192行,但html5lib完成了工作.如果您在解析整个表时遇到问题,请尝试使用lxml,html和html5lib.

最佳答案
这是一个令人讨厌的HTML,你已经到了那里.如果我们暂时忽略表行和表单元格的语义并将其视为纯XML,其结构如下所示:

然而,BeautifulSoup知道HTML表的语义,而是像这样解析它:

……所以,正如你所说,1和20分别位于第一和第三个td元素(not tags)中.

你实际上可以得到这些td元素的内容,如下所示:

>>> from bs4 import BeautifulSoup
>>> soup = BeautifulSoup("

猜你在找的HTML相关文章