Python3爬虫学习之应对网站反爬虫机制的方法分析


Posted in Python onDecember 12, 2018

本文实例讲述了Python3爬虫学习之应对网站反爬虫机制的方法。分享给大家供大家参考,具体如下:

如何应对网站的反爬虫机制

在访问某些网站的时候,网站通常会用判断访问是否带有头文件来鉴别该访问是否为爬虫,用来作为反爬取的一种策略。

例如打开搜狐首页,先来看一下Chrome的头信息(F12打开开发者模式)如下:

Python3爬虫学习之应对网站反爬虫机制的方法分析

如图,访问头信息中显示了浏览器以及系统的信息(headers所含信息众多,具体可自行查询)

Python中urllib中的request模块提供了模拟浏览器访问的功能,代码如下:

from urllib import request
url = 'http://www.baidu.com'
# page = request.Request(url)
# page.add_header('User-Agent', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36')
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'}
page = request.Request(url, headers=headers)
page_info = request.urlopen(page).read().decode('utf-8')
print(page_info)

可以通过add_header(key, value) 或者直接以参数的形式和URL一起请求访问,

urllib.request.Request()
urllib.request.Request(url, data=None, headers={}, origin_req_host=None, unverifiable=False, method=None)

其中headers是一个字典,通过这种方式可以将爬虫模拟成浏览器对网站进行访问。
https://docs.python.org/3/library/urllib.request.html?highlight=request#module-urllib.request

更多关于Python相关内容可查看本站专题:《Python Socket编程技巧总结》、《Python正则表达式用法总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
在Python的while循环中使用else以及循环嵌套的用法
Oct 14 Python
python基于itchat实现微信群消息同步机器人
Feb 27 Python
将tensorflow的ckpt模型存储为npy的实例
Jul 09 Python
python3.6利用pyinstall打包py为exe的操作实例
Oct 31 Python
Python3爬虫之urllib携带cookie爬取网页的方法
Dec 28 Python
python itchat实现调用微信接口的第三方模块方法
Jun 11 Python
对django2.0 关联表的必填on_delete参数的含义解析
Aug 09 Python
Python 转换RGB颜色值的示例代码
Oct 13 Python
python中with用法讲解
Feb 07 Python
python开发实例之Python的Twisted框架中Deferred对象的详细用法与实例
Mar 19 Python
Python定义一个函数的方法
Jun 15 Python
Python filter()及reduce()函数使用方法解析
Sep 05 Python
python实现简单多人聊天室
Dec 11 #Python
在python中利用KNN实现对iris进行分类的方法
Dec 11 #Python
python 划分数据集为训练集和测试集的方法
Dec 11 #Python
Python sklearn KFold 生成交叉验证数据集的方法
Dec 11 #Python
想学python 这5本书籍你必看!
Dec 11 #Python
对python中数据集划分函数StratifiedShuffleSplit的使用详解
Dec 11 #Python
Python3爬虫学习入门教程
Dec 11 #Python
You might like
用PHP+MySQL搭建聊天室功能实例代码
2012/08/20 PHP
php全排列递归算法代码
2012/10/09 PHP
关于js与php互相传值的介绍
2013/06/25 PHP
PHP面向对象程序设计之类常量用法实例
2014/08/20 PHP
基于laravel-admin 后台 列表标签背景的使用方法
2019/10/03 PHP
javascript 装载iframe子页面,自适应高度
2009/03/20 Javascript
jQuery 学习第六课 实现一个Ajax的TreeView
2010/05/17 Javascript
jquery nth-child()选择器的简单应用
2010/07/10 Javascript
(function($){...})(jQuery)的意思
2010/07/22 Javascript
表头固定(利用jquery实现原理介绍)
2012/11/08 Javascript
浅谈Javascript中的12种DOM节点类型
2016/08/19 Javascript
js仿手机页面文件下拉刷新效果
2016/10/14 Javascript
webpack打包后直接访问页面图片路径错误的解决方法
2017/06/17 Javascript
详解Vuex中mapState的具体用法
2017/09/28 Javascript
JS实现带动画的回到顶部效果
2017/12/28 Javascript
vue使用v-for实现hover点击效果
2018/09/29 Javascript
详解vue中localStorage的使用方法
2018/11/22 Javascript
vue-cli基础配置及webpack配置修改的完整步骤
2019/10/20 Javascript
Vue组件通信中非父子组件传值知识点总结
2019/12/05 Javascript
JavaScript 接口原理与用法实例详解
2020/05/12 Javascript
[53:10]Secret vs Pain 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
[43:47]完美世界DOTA2联赛PWL S3 LBZS vs Phoenix 第一场 12.09
2020/12/11 DOTA
python模拟新浪微博登陆功能(新浪微博爬虫)
2013/12/24 Python
5种Python单例模式的实现方式
2016/01/14 Python
Python 描述符(Descriptor)入门
2016/11/20 Python
django多对多表的创建,级联删除及手动创建第三张表
2019/07/25 Python
详解Python IO口多路复用
2020/06/17 Python
python如何实时获取tcpdump输出
2020/09/16 Python
Django数据统计功能count()的使用
2020/11/30 Python
CSS3 优势以及网页设计师如何使用CSS3技术
2009/07/29 HTML / CSS
使用CSS3实现多列布局与多背景的技巧
2016/02/29 HTML / CSS
利用纯CSS3实现动态的自行车特效源码
2017/01/20 HTML / CSS
批评与自我批评总结
2014/10/17 职场文书
学生逃课检讨书
2015/02/17 职场文书
使用CSS实现一个搜索引擎的原理解析
2021/09/25 HTML / CSS
Nginx利用Logrotate实现日志分割
2022/05/20 Servers