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 相关文章推荐
VSCode下好用的Python插件及配置
Apr 06 Python
python游戏开发之视频转彩色字符动画
Apr 26 Python
PyQt5 实现字体大小自适应分辨率的方法
Jun 18 Python
django中SMTP发送邮件配置详解
Jul 19 Python
python使用tomorrow实现多线程的例子
Jul 20 Python
Django 开发环境与生产环境的区分详解
Jul 26 Python
在tensorflow中实现去除不足一个batch的数据
Jan 20 Python
Python如何将函数值赋给变量
Apr 28 Python
用于ETL的Python数据转换工具详解
Jul 21 Python
基于python调用jenkins-cli实现快速发布
Aug 14 Python
Python编写memcached启动脚本代码实例
Aug 14 Python
python字典的元素访问实例详解
Jul 21 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
Laravel 批量更新多条数据的示例
2017/11/27 PHP
Thinkphp5.0 框架Model模型简单用法分析
2019/10/11 PHP
PHP程序员简单的开展服务治理架构操作详解(二)
2020/05/14 PHP
基于jquery的高性能td和input切换并可修改内容实现代码
2011/01/09 Javascript
前后台交互过程中json格式如何解析以及如何生成
2012/12/26 Javascript
jquery实现盒子下拉效果示例代码
2013/09/12 Javascript
js中split函数的使用方法说明
2013/12/26 Javascript
jquery动态加载js/css文件方法(自写小函数)
2014/10/11 Javascript
jQuery实现平滑滚动的标签分栏切换效果
2015/08/28 Javascript
js表单中选择框值的获取及表单的序列化
2015/12/17 Javascript
判断js的Array和Object的实现方法
2016/08/29 Javascript
jquery easyui DataGrid简单示例
2017/01/23 Javascript
Javascript实现倒计时时差效果
2017/05/18 Javascript
详解VueJs前后端分离跨域问题
2017/05/24 Javascript
React组件重构之嵌套+继承及高阶组件详解
2018/07/19 Javascript
深入理解JavaScript 中的执行上下文和执行栈
2018/10/23 Javascript
Vue-CLI与Vuex使用方法实例分析
2020/01/06 Javascript
JS原形与原型链深入详解
2020/05/09 Javascript
[02:41]辉夜杯现场一家三口 “我爸玩风行 我玩血魔”
2015/12/27 DOTA
python通过装饰器检查函数参数数据类型的方法
2015/03/13 Python
浅谈Django学习migrate和makemigrations的差别
2018/01/18 Python
解决Python中定时任务线程无法自动退出的问题
2019/02/18 Python
python实现切割url得到域名、协议、主机名等各个字段的例子
2019/07/25 Python
python基于socket进行端口转发实现后门隐藏的示例
2019/07/25 Python
pytorch 固定部分参数训练的方法
2019/08/17 Python
PyTorch中常用的激活函数的方法示例
2019/08/20 Python
Python使用PyQt5/PySide2编写一个极简的音乐播放器功能
2020/02/07 Python
Python用类实现扑克牌发牌的示例代码
2020/06/01 Python
叙述DBMS对数据控制功能有哪些
2016/06/12 面试题
Linux内核产生并发的原因
2012/07/13 面试题
大学生第一学年自我鉴定
2014/09/12 职场文书
2014幼儿园教师个人工作总结
2014/11/08 职场文书
北京故宫的导游词
2015/01/31 职场文书
个人求职自荐信范文
2015/03/06 职场文书
党员证明信
2015/06/19 职场文书
利用JavaScript写一个简单计算器
2021/11/27 Javascript