我正在编写一些语法来解析网站并获得所有href。但是,当我尝试导入bs4时,会弹出一个错误,说" ImportError:无法导入名称' HTMLParseError'。我使用的是Python 3.5.2。
我接受过去的参考,并知道它可能是由旧版本的bs4引起的,因此已将其升级到版本4.5.1。但是,错误仍然存在。这是我的语法有问题(我在下面附上,这也是过去的参考)。或者我必须寻找另一种工具来完成任务?
有人有任何想法吗?还有一件事,我也尝试安装lxml(它说无法找到vcvarsall.bat)但也失败了。所以,我可以使用的工具不多。
from bs4 import BeautifulSoup
import urllib.request
def open_html():
resp = urllib.request.urlopen("http://www.gpsbasecamp.com/national-parks")
soup = BeautifulSoup(resp, from_encoding=resp.info().get_param('charset'))
for link in soup.find_all('a', href=True):
print(link['href'])
if __name__ == '__main__':
open_html()
答案 0 :(得分:0)
如果您想手动安装lxml,可以下载从页面http://www.lfd.uci.edu/~gohlke/pythonlibs/复制的lxml .whl文件。接下来打开cmd,cd到dict保存此文件的位置,然后使用命令:
pip install [name_of_file]
但这是解决此问题的最简单方法,否则我会将您推荐给主题:
答案 1 :(得分:0)
作为替代措施,安装Anaconda python,其中包括BS 4.4.1和lxml 3.6(https://docs.continuum.io/anaconda/pkg-docs)。总的来说,Anaconda使包管理变得轻而易举。