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 相关文章推荐
详解Django框架中用户的登录和退出的实现
Jul 23 Python
Python编程中实现迭代器的一些技巧小结
Jun 21 Python
Python中input与raw_input 之间的比较
Aug 20 Python
对numpy中的数组条件筛选功能详解
Jul 02 Python
python列表每个元素同增同减和列表元素去空格的实例
Jul 20 Python
Django中create和save方法的不同
Aug 13 Python
Django2 连接MySQL及model测试实例分析
Dec 10 Python
pytorch 实现查看网络中的参数
Jan 06 Python
使用python turtle画高达
Jan 19 Python
解决使用python print打印函数返回值多一个None的问题
Apr 09 Python
用python写一个带有gui界面的密码生成器
Nov 06 Python
用python爬虫批量下载pdf的实现
Dec 01 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中的strtr函数使用介绍(str_replace)
2011/10/20 PHP
php引用地址改变变量值的问题
2012/03/23 PHP
浅谈PHP强制类型转换,慎用!
2013/06/06 PHP
PHP小偷程序的设计与实现方法详解
2016/10/15 PHP
jquery中map函数与each函数的区别实例介绍
2014/06/23 Javascript
通过JS来动态的修改url,实现对url的增删查改
2014/09/01 Javascript
escape函数解决js中ajax传递中文出现乱码问题
2014/10/30 Javascript
JS获取及设置TextArea或input文本框选择文本位置的方法
2015/03/24 Javascript
js中跨域方法原理详解
2015/07/19 Javascript
QQ登录背景闪动效果附效果演示源码下载
2015/09/22 Javascript
JavaScript、jQuery与Ajax的关系
2016/01/24 Javascript
项目实践一图片上传之form表单还是base64前端图片压缩(前端图片压缩)
2016/07/28 Javascript
原生js封装的一些jquery方法(详解)
2016/09/20 Javascript
微信小程序  modal弹框组件详解
2016/10/27 Javascript
使用Browserify来实现CommonJS的浏览器加载方法
2017/05/14 Javascript
JS 60秒后重新发送验证码的实例讲解
2017/07/26 Javascript
使用JS和canvas实现gif动图的停止和播放代码
2017/09/01 Javascript
node.js-v6新版安装具体步骤(分享)
2017/09/06 Javascript
详解Node.js中path模块的resolve()和join()方法的区别
2018/10/29 Javascript
vue.js自定义组件directives的实例代码
2018/11/09 Javascript
说说Vue.js中的functional函数化组件的使用
2019/02/12 Javascript
vue实现弹幕功能
2019/10/25 Javascript
微信小程序swiper组件实现抖音翻页切换视频功能的实例代码
2020/06/24 Javascript
Python3实现生成随机密码的方法
2014/08/23 Python
Pandas之drop_duplicates:去除重复项方法
2018/04/18 Python
Python redis操作实例分析【连接、管道、发布和订阅等】
2019/05/16 Python
PyQt5创建一个新窗口的实例
2019/06/20 Python
python多线程共享变量的使用和效率方法
2019/07/16 Python
Python 如何优雅的将数字转化为时间格式的方法
2019/09/26 Python
Python Selenium截图功能实现代码
2020/04/26 Python
美国保健品专家:Life Extension
2018/05/04 全球购物
加拿大在线旅游公司:Flighthub
2019/03/11 全球购物
工作简报范文
2015/07/21 职场文书
《钢铁是怎样炼成的》高中读后感
2019/08/07 职场文书
《自然之道》读后感3篇
2019/12/17 职场文书
Python Pandas pandas.read_sql函数实例用法
2021/06/21 Python