我对bs4包有一个问题。
我有一个html文档,如下所示:
data = """<html><head></head><body>
<p> this is tab </p>
<img src="image.jpg">
</body></html>
"""这是我的代码:
from bs4 import BeautifulSoup
soup = BeautifulSoup(data, 'html5lib')
soup.find_all("a")当我运行它时,bs4仍然在循环中并且不返回任何东西,可能是因为在某些HTML数据中不存在标记a。
非常感谢。
from bs4 import BeautifulSoup
data = open("file.htm").read()
soup = BeautifulSoup(data, 'html5lib')
soup.find_all("a")发布于 2016-03-19 02:18:47
尝试使用内置的html.parser,它甚至可以处理无效的超文本标记语言。
from bs4 import BeautifulSoup
data = """<html><head></head><body>
<p> this is tab </p>
<img src="image.jpg">
</body></html>
"""
soup = BeautifulSoup(data, 'html.parser')
soup.find_all("a")发布于 2016-03-18 17:04:09
我不明白为什么你的程序在使用find_all时会挂起,如果html页面很大,可能需要一段时间,但它不应该挂起。
下面是一些你可以尝试的东西:
pdb来检测程序挂起的确切位置,将这一行添加到代码import pdb; pdb.set_trace()的开头并从那里跟踪它pip freeze | grep html5lib安装了pip freeze | grep html5lib,如果它不存在,请使用pip install --upgrade beautifulsoup4安装它类似的SO BeautifulSoup,有人提到他们通过升级BeautifulSoup修复了它,请尝试使用:
在BeautifulSoup文档中,他们建议对某些Python版本使用特定的解析器:
如果可以的话,我建议您安装并使用
以提高速度。
如果您使用的是早于2.7.3的Python2版本,或者是早于3.2.2的Python3版本,那么安装lxml或html5lib是必不可少的-- Python内置的HTML解析器在旧版本中性能不是很好。
https://stackoverflow.com/questions/36079845
复制相似问题