Python爬虫UA伪装爬取的实例讲解


Posted in Python onFebruary 19, 2021

在使用python爬取网站信息时,查看爬取完后的数据发现,数据并没有被爬取下来,这是因为网站中有UA这种请求载体的身份标识,如果不是基于某一款浏览器爬取则是不正常的请求,所以会爬取失败。本文介绍Python爬虫采用UA伪装爬取实例。

一、python爬取失败原因如下:

UA检测是门户网站的服务器会检测对应请求的载体身份标识,如果检测到请求的载体身份标识为某一款浏览器,说明该请求是一个正常的请求。如果检测到请求的载体身份标识不是基于某一款浏览器的。则表示该请求为不正常的请求,则服务器端就很有可能会拒绝该次请求。

二、解决方法:采用UA伪装

让爬虫对应的请求载体身份标识伪装成某一款浏览器,这里采用的伪装成Chrome浏览器。

采用UA伪装爬取实例

import requests
if __name__=="__main__":
  headers={
    "User-Agent":"Mozilla/5.0(Windows NT 10.0;Win64;x64) AppleWebKit / 537.36(KHTML, likeGecko) 
    Chrome / 88.0.4324.150 Safari / 537.36"
  }
  url="https://www.sogou.com/web"
  queryword=input("输出关键字")
  param={
    "query":queryword
  }
  res=requests.get(url=url,params=param,headers=headers)
  res.encoding="utf-8"
  page_text=res.text
  fileName=queryword+".html"
  with open(fileName,"w",encoding="utf-8") as fs:
    fs.write(page_text)
  print(page_text+"爬取结束")

知识点扩展:

采用UA伪装:让爬虫对应的请求载体身份标识伪装成某一款浏览器,这里采用的伪装成Chrome浏览器

代码如下:

import requests
#UA:User—Agent(请求载体的身份标识)
# UA检测:门户网站的服务器会检测对应请求的载体身份标识,如果检测到请求的载体身份标识为某一款浏览器,说明该请求是一个正常的请求。
# 如果检测到请求的载体身份标识不是基于某一款浏览器的。则表示该请求为不正常的请求,则服务器端就很有可能会拒绝该次请求
if __name__=="__main__":
  headers={
    "User-Agent":"Mozilla/5.0(Windows NT 10.0;Win64;x64) AppleWebKit / 537.36(KHTML, likeGecko) Chrome / 88.0.4324.150 Safari / 537.36"
  }
  url="https://www.sogou.com/web"
  queryword=input("输出关键字")
  param={
    "query":queryword
  }
  res=requests.get(url=url,params=param,headers=headers)
  res.encoding="utf-8"
  page_text=res.text
  fileName=queryword+".html"
  with open(fileName,"w",encoding="utf-8") as fs:
    fs.write(page_text)
  print(page_text+"爬取结束")

到此这篇关于Python爬虫UA伪装爬取的实例讲解的文章就介绍到这了,更多相关Python爬虫如何UA伪装爬取内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python3 中把txt数据文件读入到矩阵中的方法
Apr 27 Python
python实现一组典型数据格式转换
Dec 15 Python
Python3内置模块之json编解码方法小结【推荐】
Dec 09 Python
解决Django中修改js css文件但浏览器无法及时与之改变的问题
Aug 31 Python
python实现把二维列表变为一维列表的方法分析
Oct 08 Python
python web框架Flask实现图形验证码及验证码的动态刷新实例
Oct 14 Python
wxPython实现画图板
Aug 27 Python
利用Tensorflow构建和训练自己的CNN来做简单的验证码识别方式
Jan 20 Python
Django rest framework分页接口实现原理解析
Aug 21 Python
Python基础之操作MySQL数据库
May 06 Python
Python连续赋值需要注意的一些问题
Jun 03 Python
python调用ffmpeg命令行工具便捷操作视频示例实现过程
Nov 01 Python
Pycharm制作搞怪弹窗的实现代码
Feb 19 #Python
python 高阶函数简单介绍
Feb 19 #Python
如何用Matlab和Python读取Netcdf文件
Feb 19 #Python
python中最小二乘法详细讲解
Feb 19 #Python
python中scipy.stats产生随机数实例讲解
Feb 19 #Python
python的scipy.stats模块中正态分布常用函数总结
Feb 19 #Python
python+opencv实现车道线检测
Feb 19 #Python
You might like
php中文字母数字验证码实现代码
2008/04/25 PHP
一个典型的PHP分页实例代码分享
2011/07/28 PHP
php基本函数汇总
2015/07/09 PHP
php中关于长度计算容易混淆的问题分析
2016/05/27 PHP
PHP二维索引数组的遍历实例分析【2种方式】
2019/06/24 PHP
JQuery 应用 JQuery.groupTable.js
2010/12/15 Javascript
jQuery中读取json文件示例代码
2013/05/10 Javascript
yepnope.js使用详解及示例分享
2014/06/23 Javascript
node.js中的events.emitter.once方法使用说明
2014/12/10 Javascript
html的DOM中document对象anchors集合用法实例
2015/01/21 Javascript
PHP+jQuery+Ajax+Mysql如何实现发表心情功能
2015/08/06 Javascript
分享15个大家都熟知的jquery小技巧
2015/12/02 Javascript
js一维数组、多维数组和对象的混合使用方法
2016/04/03 Javascript
ThinkJS中如何使用MongoDB的CURD操作
2016/12/13 Javascript
获取url中用&隔开的参数实例(分享)
2017/05/28 Javascript
jQuery序列化后的表单值转换成Json
2017/06/16 jQuery
vue中阻止click事件冒泡,防止触发另一个事件的方法
2018/02/08 Javascript
对Vue- 动态元素属性及v-bind和v-model的区别详解
2018/08/27 Javascript
Vue表单控件数据绑定方法详解
2020/02/05 Javascript
[06:30]DOTA2英雄梦之声_第15期_死亡先知
2014/06/21 DOTA
python队列通信:rabbitMQ的使用(实例讲解)
2017/12/22 Python
PyCharm-错误-找不到指定文件python.exe的解决方法
2019/07/01 Python
解决Tensorboard 不显示计算图graph的问题
2020/02/15 Python
python是怎么被发明的
2020/06/15 Python
Django修改app名称和数据表迁移方案实现
2020/09/17 Python
世界上最大的售后摩托车零配件超市:J&P Cycles
2017/12/08 全球购物
生物专业个人自荐信范文
2013/11/29 职场文书
大学毕业自我鉴定范文
2014/02/03 职场文书
民族团结先进个人材料
2014/02/05 职场文书
人事专员职责
2014/02/22 职场文书
俞敏洪一分钟演讲稿
2014/08/26 职场文书
小学生教师节演讲稿
2014/09/03 职场文书
2014年教务工作总结
2014/12/03 职场文书
医院合作意向书范本
2015/05/08 职场文书
python 管理系统实现mysql交互的示例代码
2021/12/06 Python
漫画「狩龙人拉格纳」公开TV动画预告图
2022/03/22 日漫