gpt4 book ai didi

Python BeautifulSoup - 在解析无效 HTML 时使用 find_next

转载 作者:行者123 更新时间:2023-11-28 18:24:59 25 4
gpt4 key购买 nike

我在 python 中使用 Beautifulsoup 来解析这个 webpage .

我的目标是在标题“Autre compétitions”之后获取表格:

page = BeautifulSoup(requests.get(website_link,proxies=proxy).text,'html.parser')
page.find("h3",text=u'Autres comp\xe9titions').find_next("table")

我设法获取了该页面,但问题是我使用 find 得到的结果只是表格标题的第一个单元格:

<table class="gradient" id="tosort">
<tr>
<th class="gradient">Type</th></tr></table>

我认为问题出在页面是 unicode 格式,所以:

page = BeautifulSoup(requests.get(path,proxies=proxy).text,'html.parser')
page.find("h3",text=u'Autres comp\xe9titions'.encode('utf-8')).find_next("table")

但我得到了相同的结果。

谢谢。

最佳答案

将解析器从 html.parser 更改为 lxmlhtml5lib

如果您没有安装任何一个解析器,here is the relevant Beautiful soup documentation on how to install different parsers .

BeautifulSoup(requests.get(website_link,proxies=proxy).text, 'lxml')

您尝试抓取的页面的 HTML 源代码无效。

我刚刚在本地对此进行了测试,lxmlhtml5lib 解析器更加宽松,它们能够正确选择 table 元素尽管 HTML 无效。根据文档,html.parser 不是很宽松,具体取决于您的 Python 版本。

更具体地说,导致 html.parser 问题的无效 HTML 是 th 元素中的杂散 div 标记:

<th class='gradient'>Type</div></td>

因此,html.parser 无法解析杂散的 div 标记,这导致它无法选择整个 元素。

关于Python BeautifulSoup - 在解析无效 HTML 时使用 find_next,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41985612/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com