爬虫的总结 私人日志
Posted ting-light
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了爬虫的总结 私人日志相关的知识,希望对你有一定的参考价值。
基于验证码的反爬虫:简单的验证码可以通过图片解析出来,或通过人工打码(一般需付费)
基于Headers的反爬虫: 大部分网站会对headers中的User-Agent和Referer字段进行检测。可根据浏览器正常访问的请求头对爬虫的请求头进行修改,尽可能和浏览器保持一致。
基于用户行为的反爬虫:例同一IP短时间内多次访问,同一账户短时间内多次进行相同操作或访问页面的间隔比较固定。第一种情况可使用大量IP代理进行绕过;第二种情况可以注册较多的账户登录,构成一个Cookie池,对用户状态进行自动切换。第三种情况可将访问间隔设置成随机的。
基于动态网页的反爬虫:动态加载技术使数据无法直接从页面获取,需要分析Ajax请求,然后进行模拟发送获取数据。Ajax请求的参数分析通常较复杂,如果能忍受较低的效率和较大的内存消耗,可以使用selenium+phantomJS进行突破。
UserAgent池,通常在下载器中间件RandomUserAgent中设置动态的User-Agent,使用时将settings中内置的UserAgentMiddleware禁用,并激活RandomUserAgent即可。
禁用Cookies 假如爬取的网站不需要登录,可尝试将Cookie禁用。因为Cookie会跟踪爬虫的访问过程,容易被发现。scrapy通过设置setting中的COOKIES_ENABLE=False,来禁用cookie.
设置下载延时与自动限速 在settings中设置DOWNLOAD_DELAY=2,表示延时2秒。设置RANDOMZE_DOWNLOAD_DEALY=True,可进行动态调整。 如果启用,当从相同的网站获取数据时,scrapy将会等待一个随机值,延迟时间为0.5到1.5之间的一个随机值乘以DOWNLOAD_DELAY.这会大大降低被发现的几率,但是有的网站会检测访问延迟的相似性,也可能发现。
scrapy提供了一种更智能的方法解决限速问题:通过自动限速扩展,该扩展能更具scrapy服务器及爬取的网站的负载自动限制爬取速度。:通过计算建立TCP连接到接收到HTTP包头(header)之间的时间来测量的。使用的限速算法根据以下规则调整下载延迟及并发数:
* spider永远以1并发请求数及AUTOTHROTTLE_START_DELAY中指定的下载延迟启动。
* 当接收到回复时,下载延迟会调整到该回复的延迟与之前下载延迟之间的平均值。如何配置
* AUTOTHROTTLE_ENABLED:默认为False,设置为True可以启用该扩展
* AUTOTHROTTLE_START_DELAY:初始下载延时,单位为秒,默认为5.0
* AUTOTHROTTLE_DEBUG:用于启动Debug模式,默认为False
* CONCURRENT_REQUESTS_PER_IP:对单个IP进行并发请求的最大值。如果非0,则忽略CONCURRENT_REQUESTS_PER_DOMANIN对单个设域名进行并发请求的最大值的设定。
代理IP池:要突破对IP访问次数的限制,可以使用大量的代理IP,然后选取合适的IP进行请求的访问。可以使用RandomProxy中间件,对请求设置代理。
Tor代理: Tor即‘洋葱路由器’,可让人们匿名浏览互联网。是一个分散式系统,允许用户通过中继网络连接,而无需建立直接连接。 好处是可以对访问的网站隐藏IP地址,因为连接是在不同服务器之前随机变换的,无法追踪您的踪迹。其实也相当于代理IP池的作用,缺点是访问速度较慢,
分布式下载器Crawlera访首先需到官网注册 https://app.scrapinghub.com/account/login/?next=/account/login,注册一个账号。注册完后,会分配个用户API Key,用作访问验证使用,不过这个下载器是收费的,需要充值才能正常工作。在Scrapy中使用这个下载器,只需两步即可。
(1)安装scrapy-crawlera:
pip install scrapy-crawlera
(2)修改settings.py:
DOWNLOADER_MIDDLEWARES={‘scrapy_crawlera.CrawleraMiddleware‘:300}
CRAWLERA_ENABLED=True
CRAWLERA_APIKEY=‘<API key>‘
这个时候就可以启用爬虫了,具体配置和管理操作,见官方文档:https://doc.scrapinghub.com/crawlera.html
Google cache 到Google的网页快照功能。Google是一个强大的搜索引擎,可以将爬取到的网页缓存到服务器,因此我们也可以访问缓存来提取数据。访问Google cache的方式为:http://webcache.gooleusercontent.com/search?q=cache:要查询的网址。
例如查看博客快照,可在浏览器中输入一下网址:
http://webcache.gooleusercontent.com/search?q=cache:http://www.cnblogs.com/qiyeboy/
大家只需要写个中间件将 Request中的URL替换成Google cache下的URL即可。
以上是关于爬虫的总结 私人日志的主要内容,如果未能解决你的问题,请参考以下文章