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

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条回答

      报告相同问题?

      相关推荐 更多相似问题

      问题事件

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

      悬赏问题

      • ¥15 centos8-arm64平台编译安装ray分布式计算框架。
      • ¥20 求帮做一个安卓app,用Android Studio制作。需要整个项目文件。
      • ¥15 使用深度学习对于楼梯尺寸进行检测
      • ¥15 特别是3和4 帮帮忙
      • ¥15 C++完成两个子类的构建,基类已给出
      • ¥66 求拉格朗日插值某点的值
      • ¥15 简易的机票预定信息系统
      • ¥15 C++实现对称图形小程序
      • ¥15 大学生考试,各位大哥帮帮忙啊啊。有奖励
      • ¥15 运行和h2o时出现运行错误(无法分析 URI 查询,赋值后找不到象'train_h2o'