gpt4 book ai didi

python - BeautifulSoup 在某些下载请求中拾取 div 对象,但在其他下载请求中拾取 div 对象

转载 作者:行者123 更新时间:2023-12-01 07:09:10 26 4
gpt4 key购买 nike

我正在使用 python 的 bs4 模块来解析 HTML。然而,我遇到了一个奇怪的错误。

当下载页面 HTML 进行解析时,我注意到 BS4 会识别某些页面中的 div 对象,但不能识别其他页面中的 div 对象,即使我引用的特定对象存在于两个页面中并且路径相同。

例如

<div class = "item" data-year = "19-20">
<div class = "irrelevant">...</div>
<div class = "irrelevant">...</div>
<div class = "stats-grids">...</div>
<div class = "irrelevant">...</div>
</div>

我做了一些挖掘,发现经常有人提出这样的问题可能是由于网页中使用 Java 而导致的,而不是显示在 HTML 中。然而,我认为在这种情况下情况并非如此,因为 BS4 正确地识别了代码保持不变的其他实例中的路径。

使用时...

res = requests.get('examplesite.com')
soup = bs4.BeautifulSoup(res.text, 'html.parser')

element = soup.select('div[data-year = "19-20"] > div[class = "stats-grids"]')

对于来自同一网站的某些页面,元素是正确的。其他时候,它可以彼此独立地找到 div[data-year = "19-20"] 和 div[class = "stats-grids"],但当我指定其中一个是另一个的子级时则不会。

换句话说,它就在那里,但只有当我指定统计网格位于数据年份内时,它才不会显示。

最佳答案

出现这种情况可能是由于网站的 HTML 不正确(例如标签未关闭)。

尝试使用 html5lib 。它将尝试通过添加附加标签来创建格式良好的 HTML 文档。

使用安装

pip install html5lib

并在 BeautifulSoup 构造函数中指定它

soup = bs4.BeautifulSoup(res.text, 'html5lib')

引用: Differences between parsers

关于python - BeautifulSoup 在某些下载请求中拾取 div 对象,但在其他下载请求中拾取 div 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58310041/

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