鱼C论坛

 找回密码
 立即注册
查看: 2799|回复: 13

[已解决]关于一个网页爬取的问题

[复制链接]
发表于 2017-6-27 07:50:59 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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'

不知道这是怎么一回事?
最佳答案
2017-6-27 09:43:11
本帖最后由 和vvv 于 2017-6-27 09:56 编辑

这个问题好。

因为这个网站返回的页面是经过gzip压缩的,用浏览器打开时浏览器会先解压缩。而用爬虫怕是没有做,所以可以用gzip包解压:
  1. import urllib.request
  2. import gzip
  3. import chardet

  4. url = 'https://wiki.52poke.com/wiki/%E5%B0%8F%E7%81%AB%E9%BE%99'
  5. response = gzip.decompress(urllib.request.urlopen(url).read())
  6. print(chardet.detect(response))
复制代码



结果:
  1. {'encoding': 'utf-8', 'confidence': 0.99, 'language': ''}
复制代码

还有一种方法是 使用 requests库访问页面
类似的,我的笔记里有一个例子:http://bbs.fishc.com/forum.php?m ... p;extra=#pid2928007
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2017-6-27 09:02:35 | 显示全部楼层
又要自问自答了干过好几次了。
这里又要根据网页设定request headers才行
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-6-27 09:43:11 | 显示全部楼层    本楼为最佳答案   

回帖奖励 +2 鱼币

本帖最后由 和vvv 于 2017-6-27 09:56 编辑

这个问题好。

因为这个网站返回的页面是经过gzip压缩的,用浏览器打开时浏览器会先解压缩。而用爬虫怕是没有做,所以可以用gzip包解压:
  1. import urllib.request
  2. import gzip
  3. import chardet

  4. url = 'https://wiki.52poke.com/wiki/%E5%B0%8F%E7%81%AB%E9%BE%99'
  5. response = gzip.decompress(urllib.request.urlopen(url).read())
  6. print(chardet.detect(response))
复制代码



结果:
  1. {'encoding': 'utf-8', 'confidence': 0.99, 'language': ''}
复制代码

还有一种方法是 使用 requests库访问页面
类似的,我的笔记里有一个例子:http://bbs.fishc.com/forum.php?m ... p;extra=#pid2928007
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-6-27 19:27:51 | 显示全部楼层
和vvv 发表于 2017-6-27 09:43
这个问题好。

因为这个网站返回的页面是经过gzip压缩的,用浏览器打开时浏览器会先解压缩。而用爬虫怕是 ...

厉害,看来爬网页之前要好好深入分析要爬的网页呢。谢谢了
我后来用了自定义request headers解决这个问题,但是你这个更加精炼。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-6-27 19:32:57 | 显示全部楼层

回帖奖励 +2 鱼币

多谢,方法很多,就看自己的喜欢了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-9-19 15:17:09 | 显示全部楼层

回帖奖励 +2 鱼币

学习  
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-9-19 15:17:48 | 显示全部楼层

回帖奖励 +2 鱼币

有点难掌握  加油
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-9-19 16:53:24 | 显示全部楼层
不懂
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-9-19 16:53:55 | 显示全部楼层

回帖奖励 +2 鱼币

。额,又没中
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-9-19 20:11:50 | 显示全部楼层

回帖奖励 +2 鱼币

学习
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-9-19 20:12:20 | 显示全部楼层

回帖奖励 +2 鱼币

学习
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-9-19 21:46:55 | 显示全部楼层

回帖奖励 +2 鱼币

学习
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

头像被屏蔽
发表于 2018-9-21 13:20:30 | 显示全部楼层

回帖奖励 +2 鱼币

提示: 作者被禁止或删除 内容自动屏蔽
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-20 10:07:01 | 显示全部楼层

回帖奖励 +2 鱼币

来顶帖子得鱼币
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-10-5 02:58

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表