gpt4 book ai didi

python - Beautiful Soup 4 find_all 找不到 Beautiful Soup 3 找到的链接

转载 作者:太空宇宙 更新时间:2023-11-04 03:47:11 28 4
gpt4 key购买 nike

我注意到一个非常烦人的错误:BeautifulSoup4(包:bs4)经常发现比以前版本(包:BeautifulSoup)更少的标签。

这是该问题的一个可重现的实例:

import requests
import bs4
import BeautifulSoup

r = requests.get('http://wordpress.org/download/release-archive/')
s4 = bs4.BeautifulSoup(r.text)
s3 = BeautifulSoup.BeautifulSoup(r.text)

print 'With BeautifulSoup 4 : {}'.format(len(s4.findAll('a')))
print 'With BeautifulSoup 3 : {}'.format(len(s3.findAll('a')))

输出:

With BeautifulSoup 4 : 557
With BeautifulSoup 3 : 1701

如您所见,差异并不小。

以下是模块的确切版本,以防有人想知道:

In [20]: bs4.__version__
Out[20]: '4.2.1'

In [21]: BeautifulSoup.__version__
Out[21]: '3.2.1'

最佳答案

您已经安装了 lxml,这意味着 BeautifulSoup 4 将使用该解析器而不是标准库 html.parser 选项。

您可以将 lxml 升级到 3.2.1(对我来说,它会为您的测试页返回 1701 个结果); lxml 本身使用了 libxml2 和 libxslt ,这也可能是罪魁祸首。您可能还必须升级那些。请参阅lxml requirements page ;目前推荐使用 libxml2 2.7.8 或更高版本。

或者在解析 soup 时显式指定其他解析器:

s4 = bs4.BeautifulSoup(r.text, 'html.parser')

关于python - Beautiful Soup 4 find_all 找不到 Beautiful Soup 3 找到的链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27766087/

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