升级了Python3.5之后,我使用BeautifulSoup4时候出现了ImportError: cannot import name 'HTMLParseError'的错误。在网上搜索好久资料之后得到了解决方法,原因是BeautifulSoup在4.4.0以前的版本不支持Python3.5,所以我们需要把我们的BeautifulSoup升级到4.4.0版本以上,就可以使用了。我看到网上有几个回答都是改用Python3.4,我觉得这种方法容易误导人。
这里提供两种升级新版BeautifulSoup的方法:
1、使用pip升级
在管理员权限下使用命令行输入命令“pip install --upgrade beautifulsoup4”
2、使用源码重新安装
卸载原先的BS4=》在http://www.crummy.com/software/BeautifulSoup/bs4/download/下找到你需要下载的版本下载=》解压文件=》找到根目录下的setup.py=》以管理员权限打开命令行输入“python setup.py install”
转自:https://blog.csdn.net/sinat_26599509/article/details/50609646
00x0 前言
最近更新了python版本,准备写个爬虫,意外的发现urllib库中属性不存在urlopen,于是各种google,然后总结一下给出解决方案
00x1 问题的出现
AttributeError: 'module' object has no attribute 'urlopen'
00x2 问题的解决途径
我们先来看下官方文档的解释:
- a new urllib package was created. It consists of code from
- urllib, urllib2, urlparse, and robotparser. The old
- modules have all been removed. The new package has five submodules:
- urllib.parse, urllib.request, urllib.response,
- urllib.error, and urllib.robotparser. The
- urllib.request.urlopen() function uses the url opener from
- urllib2. (Note that the unittests have not been renamed for the
- beta, but they will be renamed in the future.)
也就是说官方3.0版本已经把urllib2,urlparse等五个模块都并入了urllib中,也就是整合了。
00x3 正确的使用方法
- import urllib.request
- url="http://www.baidu.com"
- get=urllib.request.urlopen(url).read()
- print(get)
其实也是可以换个utf-8的编码让读取出来的源码更正确的,但这已经是番外的不再提了。
转自:https://blog.csdn.net/pythonniu/article/details/51855035