weixin_42368395 2022-05-12 14:48 采纳率: 50%
浏览 297
已结题

python爬虫爬取网页为什么获得的不是正常网页数据

使用python的requests库爬取百度搜索页面的时候,同样的代码,UA是从浏览器复制的,cookie也按照浏览器的复制添加到请求头了,为什么家里的电脑可以正常获取网页数据而另一台电脑获取的全是乱码?有人可以解答一下吗,谢谢啦。PS:这里的乱码不是中文乱码。而是数据全部乱码,具体可以见下面截图。
这里是用到的代码部分

import requests
headers={
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:99.0) Gecko/20100101 Firefox/99.0",
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,/;q=0.8",
"Accept-Language": "zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2",
"Connection": "keep-alive",
"Accept-Encoding": "gzip, deflate, br",
"Host": "www.baidu.com",
"Cookie": "这里一长串就不复制了太占地方,就是直接从浏览器扒出来的cookie"
}
page = 0
v_text = "查询内容"
url = 'http://www.baidu.com/s?wd=%27 + v_text + '&pn=' + str(page * 10)
r = requests.get(url,headers=myheaders)
以上是获取页面信息部分

正常和异常数据对比图如下

首先是在家里电脑的正常数据截图:

img

以及输出的信息截图:

img

可见状态码200,数据正常
但使用另一台电脑运行同样代码后数据为:

img

输出信息为:

img

可见无法异常时获得的数据全部为乱码并且requests库无法检测出数据编码格式。
我又将为解码的数据(即r.content)输出,发现同样为乱码,如下图:

img

并且异常时的数据长度比正常时的数据长度小得多。正常大概800多KB而异常的只有100多KB

不知道是否是另一台电脑被IP反爬的原因,如果是反爬机制的话为什么会出现乱码而不是百度页面正常的人机验证页面。我同样尝试了使用芝麻代理的免费IP代理,异常结果任然相同,可能不是高匿代理的原因?
求解答一下疑惑,为什么会出现这种情况,是否真的受到反爬机制拦截?为什么会是乱码?orz!
  • 写回答

2条回答 默认 最新

  • 二九筒 2022-05-12 17:23
    关注

    这代码里面好多错误,你是怎么运行成功的?

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 5月27日
  • 已采纳回答 5月19日
  • 创建了问题 5月12日

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器