Python爬虫开发:反爬虫措施以及爬虫编写注意事项
反爬虫的几重措施
很多人学习python,不知道从何学起。
很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手。
很多已经做案例的人,却不知道如何去学习更加高深的知识。
那么针对这三类人,我给大家提供一个好的学习平台,免费领取视频教程,电子书籍,以及课程的源代码!
QQ群:1097524789
1.IP限制
如果是个人编写的爬虫,IP可能是固定的,那么发现某个IP请求过于频繁并且短时间内访问大量的页面,有爬虫的嫌疑,作为网站的管理或者运维人员,你可能就得想办法禁止这个IP地址访问你的网页了。那么也就是说这个IP发出的请求在短时间内不能再访问你的网页了,也就暂时挡住了爬虫。
2.User-Agent
User-Agent是用户访问网站时候的浏览器的标识
下面我列出了常见的几种正常的系统的User-Agent大家可以参考一下,
并且在实际发生的时候,根据浏览器的不同,还有各种其他的User-Agent,我举几个例子方便大家理解:
safari 5.1 – MAC
User-Agent:Mozilla/5.0 (Macintosh; U; IntelMac OS X 10_6_8; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1Safari/534.50
Firefox 4.0.1 – MAC
User-Agent: Mozilla/5.0 (Macintosh; IntelMac OS X 10.6; rv:2.0.1) Gecko/20100101 Firefox/4.0.1
Firefox 4.0.1 – Windows
User-Agent:Mozilla/5.0 (Windows NT 6.1;rv:2.0.1) Gecko/20100101 Firefox/4.0.1
同样的也有很多的合法的User-Agent,只要用户访问不是正常的User-Agent极有可能是爬虫再访问,这样你就可以针对用户的User-Agent进行限制了。
3、 验证码反爬虫
这个办法也是相当古老并且相当的有效果,如果一个爬虫要解释一个验证码中的内容,这在以前通过简单的图像识别是可以完成的,但是就现在来讲,验证码的干扰线,噪点都很多,甚至还出现了人类都难以认识的验证码(某二三零六)。
4.Ajax异步加载
5.Noscript标签的使用
<noscript>标签是在浏览器(或者用户浏览标识),没有启动脚本支持的情况下触发的标签,在低级爬虫中,基本都没有配置js引擎,通常这种方式和Ajax异步加载同时使用。用于保护自己不想让爬虫接触的信息。
6.Cookie限制
第一次打开网页会生成一个随机cookie,如果再次打开网页这个cookie不存在,那么再次设置,第三次打开仍然不存在,这就非常有可能是爬虫在工作了。很简单,在三番屡次没有带有该带的cookie,就禁止访问。
爬虫编写注意事项
在这一部分,笔者希望就自己的经验给大家编写爬虫提供比较可行的建议,也为大家提一个醒:
1.道德问题,是否遵守robots协议;
2.小心不要出现卡死在死循环中,尽量使用urlparser去解析分离url决定如何处理,如果简单的想当然的分析url很容易出现死循环的问题;
3.单页面响应超时设置,默认是200秒,建议调短,在网络允许的条件下,找到一个平衡点,避免所有的爬虫线程都在等待200,结果出现效率降低;
4.高效准确的判重模式,如果判重出现问题,就会造成访问大量已经访问过的页面浪费时间;
5.可以采用先下载,后分析的方法,加快爬虫速度;
6.在异步编程的时候要注意资源死锁问题;
7.定位元素要精准(xpath)尽量避免dirty data。
希望大家提出自己的意见,本系列大多数时间都在从微观的角度讲爬虫各个部件的解决方案。
Python爬虫开发:反爬虫措施以及爬虫编写注意事项的更多相关文章
- python自动化开发-[第二十三天]-初识爬虫
今日概要: 1.爬汽车之家的新闻资讯 2.爬github和chouti 3.requests和beautifulsoup 4.轮询和长轮询 5.django request.POST和request. ...
- 【学习笔记】第一章 python安全开发简介
1.1为什么黑客喜欢用python? python为我们提供了非常完善的基础代码库,覆盖了网络.文件.GUI.数据库.文本等大量内容,被形象的称为“”内置电池“”,用python开发,许多功能不必从零 ...
- Python爬虫开发与项目实战
Python爬虫开发与项目实战(高清版)PDF 百度网盘 链接:https://pan.baidu.com/s/1MFexF6S4No_FtC5U2GCKqQ 提取码:gtz1 复制这段内容后打开百度 ...
- Python爬虫入门教程 61-100 写个爬虫碰到反爬了,动手破坏它!
python3爬虫遇到了反爬 当你兴冲冲的打开一个网页,发现里面的资源好棒,能批量下载就好了,然后感谢写个爬虫down一下,结果,一顿操作之后,发现网站竟然有反爬措施,尴尬了. 接下来的几篇文章,我们 ...
- Python爬虫与反爬虫(7)
[Python基础知识]Python爬虫与反爬虫(7) 很久没有补爬虫了,相信在白蚁二周年庆的活动大厅比赛中遇到了关于反爬虫的问题吧 这节我会做个基本分享. 从功能上来讲,爬虫一般分为数据采集,处理, ...
- Python分布式爬虫开发搜索引擎 Scrapy实战视频教程
点击了解更多Python课程>>> Python分布式爬虫开发搜索引擎 Scrapy实战视频教程 课程目录 |--第01集 教程推介 98.23MB |--第02集 windows下 ...
- 爬虫开发python工具包介绍 (1)
本文来自网易云社区 作者:王涛 本文大纲: 简易介绍今天要讲解的两个爬虫开发的python库 详细介绍 requests库及函数中的各个参数 详细介绍 tornado 中的httpcilent的应用 ...
- Python爬虫开发【第1篇】【Scrapy框架】
Scrapy 框架介绍 Scrapy是用纯Python实现一个为了爬取网站数据.提取结构性数据而编写的应用框架. Srapy框架,用户只需要定制开发几个模块就可以轻松的实现一个爬虫,用来抓取网页内容以 ...
- python高级—— 从趟过的坑中聊聊爬虫、反爬以及、反反爬,附送一套高级爬虫试题
前言: 时隔数月,我终于又更新博客了,然而,在这期间的粉丝数也就跟着我停更博客而涨停了,唉 是的,我改了博客名,不知道为什么要改,就感觉现在这个名字看起来要洋气一点. 那么最近到底咋不更新博客了呢?说 ...
随机推荐
- Java 字符串比较、拼接问题
@ 目录 1.字符串的比较 1. 1 字符串常量池 1.2 String类型的比较方式 1.3 String的创建方式 1.3.1 直接使用"="进行赋值 1.3.2 使用&quo ...
- 数据可视化之powerBI技巧(三)这个Power BI技巧很可爱:利用DAX制作时钟
周末放松一下,给大家分享一个小技巧,仅利用DAX制作一个简易的时钟. 时钟效果如下: 这个时钟的制作只需一个度量值,你信吗? 事实上确实如此,制作步骤介绍如下: 1,新建参数,生成一个数字序列作为小时 ...
- Unity安卓共享纹理
前置知识:安卓集成Unity开发示例 本文的目的是实现以下的流程: Android/iOS native app 操作摄像头 -> 获取视频流数据 -> 人脸检测或美颜 -> 传输给 ...
- 如何写一个自己的HashMap
想必很多Java工程师出去面试的时候都会被问到HashMap的底层实现原理,很多人觉得没什么必要,反正我会用就行,就我的感觉而言,在初期确实没什么必要,但是站在公司角度想,如果面试者连底层实现都搞定了 ...
- Ubuntu18.04安装GitLab搭建私有仓库服务器过程笔记
百度了很多资料结果折腾很久还没安装成功,索性就直接上官网找文档参考顺利搭建完成 因为有2台服务器做练习,总结了2种安装方式提供参考:第一种官网安装方式,第二种国内镜像安装方式(建议采用第二种) 第 ...
- 【JVM之内存与垃圾回收篇】程序计数器
程序计数器 介绍 JVM 中的程序计数寄存器(Program Counter Register)中,Register 的命名源于 CPU 的寄存器,寄存器存储指令相关的现场信息.CPU 只有把数据装载 ...
- Netty 学习笔记(1) ------ Hello World
服务端启动流程 package com.example.netty; import com.example.netty.handler.HelloServerHandler; import io.ne ...
- H5移动端,ios从后台返回到app,页面会白一下
visibilitychange事件可以检查从后台返回事件,然后通过添加div,强制浏览器刷新页面 var divEle = document.createElement("DIV" ...
- fgdsafhak
- 人车识别实验丨华为ModelArts VS 百度Easy DL硬核体验
摘要:想了解时下流行的自动驾驶相关AI模型吗?接下来就用华为云的ModelArts和百度的Easy DL带你体验一下AI平台是怎么进行模型训练的. 华为ModelArts自动学习 VS 百度Easy ...