|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
初次尝试python的网络爬虫,选择有规律性的口袋妖怪图鉴作为最初的练习对象。
但是在爬取如下网页时遇到问题:https://wiki.52poke.com/wiki/%E5%B0%8F%E7%81%AB%E9%BE%99
后面二进制的部分是从网站导航页爬取下来的。
url = 'https://wiki.52poke.com/wiki/%E5%B0%8F%E7%81%AB%E9%BE%99'
response = urllib.request.urlopen(url)
import chardet
chardet.detect(response.read())
输出结果是:{'confidence': 0.0, 'encoding': None, 'language': None}
整个爬取的网页内容无法识别。
同样的网站下,其导航页面却是能够识别编码的:url = 'https://wiki.52poke.com/zh/%E5%AE%9D%E5%8F%AF%E6%A2%A6%E5%88%97%E8%A1%A8%EF%BC%88%E6%8C%89%E5%85%A8%E5%9B%BD%E5%9B%BE%E9%89%B4%E7%BC%96%E5%8F%B7%EF%BC%89'
不知道这是怎么一回事?
本帖最后由 和vvv 于 2017-6-27 09:56 编辑
这个问题好。
因为这个网站返回的页面是经过gzip压缩的,用浏览器打开时浏览器会先解压缩。而用爬虫怕是没有做,所以可以用gzip包解压: - import urllib.request
- import gzip
- import chardet
- url = 'https://wiki.52poke.com/wiki/%E5%B0%8F%E7%81%AB%E9%BE%99'
- response = gzip.decompress(urllib.request.urlopen(url).read())
- print(chardet.detect(response))
复制代码
结果: - {'encoding': 'utf-8', 'confidence': 0.99, 'language': ''}
复制代码
还有一种方法是 使用 requests库访问页面
类似的,我的笔记里有一个例子: http://bbs.fishc.com/forum.php?m ... p;extra=#pid2928007
|
|