爬虫的总结 私人日志

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即可。

以上是关于爬虫的总结 私人日志的主要内容,如果未能解决你的问题,请参考以下文章

(私人收藏)红色项目工作计划总结汇报PPT模板

吴恩达机器学习私人总结

Zapier Slack 私人频道:仅当用户在频道中时才发送消息

Python/Selenium 隐身/私人模式

私人网络服务器上的 Apple 通用链接

使用 gogs 搭建私人 git 服务器 | nginx 添加反向代理到二级域名