我目前正在使用Python和BeautifulSoup来爬取一些网站数据。 我试图从一个格式如下的表格中提取单元格:
<tr><td>1<td><td>20<td>5%</td></td></td></td></tr>
上述HTML的问题在于BeautifulSoup将其读为一个标签。我需要提取第一个
<td>
和第三个<td>
的值,分别为1和20。不幸的是,我不知道该如何处理。我该如何让BeautifulSoup读取表格每行的第1个和第3个
<td>
标签?更新:
我找到了问题所在。我使用的是html.parser而不是BeautifulSoup的默认解析器。一旦我切换到默认解析器,问题就消失了。我也使用了答案中列出的方法。
我还发现不同的解析器对错误代码非常敏感。例如,默认解析器拒绝读取192行之后的行,但是html5lib完成了任务。因此,如果您无法解析整个表格,请尝试使用lxml、html和html5lib。
[<td>1<td><td>20<td>5%</td></td></td></td>,<td><td>20<td>5%</td></td></td>,<td>20<td>5%</td></td>,<td>5%</td>]
。 - Alex Ketay