当前位置: 首页 > news >正文

如何让你的python爬虫“拟人化”, 突破60秒不被ban,绝地求生!

在互联网上进行自动数据采集(抓取)这件事和互联网存在的时间差不多一样长。今天大众好像更倾向于用“网络数据采集”,有时会把网络数据采集程序称为网络机器人(bots)。最常用的方法是写一个自动化程序向网络服务器请求数据(通常是用 HTML 表单或其他网页文件),然后对数据进行解析,提取需要的信息。

在采集网站的时会遇到一些比数据显示在浏览器上却抓取不出来更令人沮丧的事情。也许是向服务器提交自认为已经处理得很好的表单却被拒绝,也许是自己的 IP 地址不知道什么原因直接被网站封杀,无法继续访问。 那是因为很多网站有反爬虫机制,简单地说就是识别你的爬虫是个人还是个机器。我们下面讲到的就是如何把我们的爬虫伪装成一个人。

对于简单的静态HTML可以用python的爬虫库scrapy,或者使用更简单的urllib2来爬取,用beautiful来解析。

不会总是动态的,为了功能的需求,里面会有一些动态加载来满足动态需求,如果你用爬到的静态HTML解析后消失掉了一部分网页内容,那么,没错,这部分可能就是动态加载的。另外,为了保护数据,网站总是会设计一些奇奇怪怪的要求让你的爬虫不能得逞,只能让实实在在的人才能顺利的使用。下面的几条就是让你的爬虫看起来更像个人。

1.构造合适的请求头,里面放的的请求人的资料,特别是要修改修改User-Agent,使用python的requests包,修改其中的headers参数。 2.如果网站需要你登录怎么办呢?设置cookie,保证在同一个网站保持登录状态,使用Selenium结合Phantom JS 的deletecookie()、addcookie()和deleteallcookies()方法。 3.对于动态加载的问题, 用Selenium结合Phantom JS可以模拟人操作网页行为,完成网页JS的加载,解决动态网页不能被直接爬取的问题。 4.如果网站监测到你的爬虫可能会封掉你的IP,这时候要更换IP, 使用工具Tor,来将IP地址匿名。

这是一个范例,还是有一些十分简单的方法,可以让你的网络机器人看起来更像人类访问用户。下期再聊。

更多精彩内容可以进入www.dongnaoedu.com/python.html

转载于:https://juejin.im/post/5a179947f265da432d27c756

相关文章:

  • python(58):python下划线
  • HIVE,PV,UV分析
  • unity如何实现一个固定宽度的orthagraphic相机
  • 世界上最简单的无等待算法(getAndIncrement)
  • 项目Alpha冲刺Day1
  • RHEL6基础三十二之系统默认语言修改
  • [转]建行B2B支付回调参数乱码现象解析
  • 制作简易无限魔方
  • 【技巧篇】解决悬浮的header、footer遮挡内容的处理技巧
  • 聚集索引:三级阶梯SQL Server索引
  • es 5 数组reduce方法记忆
  • 用vlan划分实现全网互通,并隔离c1,c3和c2,c4
  • Nginx 目录配置详解
  • 详解最大似然估计(MLE)、最大后验概率估计(MAP),以及贝叶斯公式的理解...
  • linux之理解文件系统上的复制,移动,删除
  • @angular/forms 源码解析之双向绑定
  • 【划重点】MySQL技术内幕:InnoDB存储引擎
  • AzureCon上微软宣布了哪些容器相关的重磅消息
  • extjs4学习之配置
  • HomeBrew常规使用教程
  • JavaScript HTML DOM
  • JavaScript创建对象的四种方式
  • js操作时间(持续更新)
  • Material Design
  • Selenium实战教程系列(二)---元素定位
  • SpringBoot几种定时任务的实现方式
  • Vultr 教程目录
  • 番外篇1:在Windows环境下安装JDK
  • 简单数学运算程序(不定期更新)
  • 那些年我们用过的显示性能指标
  • 一些关于Rust在2019年的思考
  • 责任链模式的两种实现
  • 阿里云ACE认证学习知识点梳理
  • 阿里云IoT边缘计算助力企业零改造实现远程运维 ...
  • #Linux(帮助手册)
  • #pragma data_seg 共享数据区(转)
  • ${ }的特别功能
  • $forceUpdate()函数
  • (pojstep1.1.2)2654(直叙式模拟)
  • (rabbitmq的高级特性)消息可靠性
  • (SpringBoot)第七章:SpringBoot日志文件
  • (笔试题)分解质因式
  • (二)WCF的Binding模型
  • (仿QQ聊天消息列表加载)wp7 listbox 列表项逐一加载的一种实现方式,以及加入渐显动画...
  • ****** 二 ******、软设笔记【数据结构】-KMP算法、树、二叉树
  • .bat批处理(五):遍历指定目录下资源文件并更新
  • .NET 除了用 Task 之外,如何自己写一个可以 await 的对象?
  • ??javascript里的变量问题
  • [ vulhub漏洞复现篇 ] Grafana任意文件读取漏洞CVE-2021-43798
  • []常用AT命令解释()
  • []串口通信 零星笔记
  • [2021]Zookeeper getAcl命令未授权访问漏洞概述与解决
  • [BZOJ1089][SCOI2003]严格n元树(递推+高精度)
  • [bzoj2957]楼房重建
  • [C#C++]类CLASS