如何让你的scrapy爬虫不再被ban之二(利用第三方平台crawlera做scrapy爬虫防屏蔽)

  我们在做scrapy爬虫的时候,爬虫经常被ban是常态。然而前面的文章如何让你的scrapy爬虫不再被ban,介绍了scrapy爬虫防屏蔽的各种策略组合。前面采用的是禁用cookies、动态设置user agent、代理IP和VPN等一系列的措施组合来防止爬虫被ban。除此以外官方文档还介绍了采用Google cache和crawlera的方法。这里就着重介绍一下如何利用crawlera来达到爬虫不被ban的效果。crawlera是一个利用代理IP地址池来做分布式下载的第三方平台,除了scrapy可以用以外,普通的java、php、python等都可以通过curl的方式来调用。好了,下面入正题。

  说明:

  本文章是基于前面的一系列文章完成的,如果您错过了。可以在此查看:

  安装python爬虫scrapy踩过的那些坑和编程外的思考

  scrapy爬虫成长日记之创建工程-抽取数据-保存为json格式的数据

  scrapy爬虫成长日记之将抓取内容写入mysql数据库

  如何让你的scrapy爬虫不再被ban

  crawlera官方网址:http://scrapinghub.com/crawlera/

  crawlera帮助文档:http://doc.scrapinghub.com/crawlera.html

  一、注册crawlera账号,获取crawlera API KEY

  1、注册一个crawlera账号并激活

  https://dash.scrapinghub.com/account/signup/

  

  填写好用户名,邮件和密码点击sign up即完成注册,收到注册确认邮件确认即可。

  2、创建一个Organizations

  

  3、创建完Organizations后添加crawlera user

    

  

  4、查看API key

  

  点击crawlera user的名称jack就可以查看API的详细信息了(key)

  

 

  至此,crawlera API的信息已经获取到了。

  二、修改scrapy项目

  下面看看怎么添加到scrapy项目

  1、安装scrapy-crawlera

pip install scrapy-crawlera

  2、修改settings.py

  DOWNLOADER_MIDDLEWARES下添加配置项

'scrapy_crawlera.CrawleraMiddleware': 600 

  其他配置项

CRAWLERA_ENABLED = True
CRAWLERA_USER = '<API key>'
CRAWLERA_PASS = '你crawlera账号的密码'

  注意:由于之前的项目用了自定义代理的方式,因此DOWNLOADER_MIDDLEWARES下的

#'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware': 110, #代理需要用到
#'cnblogs.middlewares.ProxyMiddleware': 100, #代理需要用到

  这两个配置项要注释掉。

  3、测试crawlera的抓取是否可用

scrapy crawl CnblogsSpider

  4、查看结果

  

  这里可以看到crawlera已经正常工作了。

  5、另外crawlera官网也可以查看抓取结果

  

  scrapy运用crawlera进行抓取就介绍到这里。另外crawlera还提供付费定制服务,如果经费充足也可以考虑付费定制scrapy的爬虫。

  代码更新至此:https://github.com/jackgitgz/CnblogsSpider(提交到github的代码将api和password去掉了,如果想运行需要添加自己的key和password)

  三、题外话:

  如果你不是scrapy爬虫,而仅仅是想python调用,crawlera也提供了python直接调用的方法

  1、通过request的方式

import requests

url = "http://twitter.com"
proxy = "paygo.crawlera.com:8010"
proxy_auth = "<API KEY>:"

proxies = {
    "http": "http://{0}@{1}/".format(proxy_auth, proxy)
}

headers = {
    "X-Crawlera-Use-HTTPS": 1
}

r = requests.get(url, proxies=proxies, headers=headers)

print("""
Requesting [{}]
through proxy [{}]

Response Time: {}
Response Code: {}
Response Headers:
{}

Response Body:
{}
""".format(url, proxy, r.elapsed.total_seconds(), r.status_code, r.headers, r.text))

  2、request代理重写url

import requests
from requests.auth import HTTPProxyAuth

url = "https://twitter.com"
headers = {}
proxy_host = "paygo.crawlera.com"
proxy_auth = HTTPProxyAuth("<API KEY>", "")
proxies = {"http": "http://{}:8010/".format(proxy_host)}

if url.startswith("https:"):
    url = "http://" + url[8:]
    headers["X-Crawlera-Use-HTTPS"] = "1"

r = requests.get(url, headers=headers, proxies=proxies, auth=proxy_auth)

print("""
Requesting [{}]
through proxy [{}]

Response Time: {}
Response Code: {}
Response Headers:
{}

Response Body:
{}
""".format(url, proxy_host, r.elapsed.total_seconds(), r.status_code,
           r.headers, r.text))

  crawlera就介绍到这里,更多关于crawlera的内容可以参考官方文档:http://doc.scrapinghub.com/index.html

时间: 2024-10-26 03:02:38

如何让你的scrapy爬虫不再被ban之二(利用第三方平台crawlera做scrapy爬虫防屏蔽)的相关文章

如何让你的scrapy爬虫不再被ban

前面用scrapy编写爬虫抓取了自己博客的内容并保存成json格式的数据(scrapy爬虫成长日记之创建工程-抽取数据-保存为json格式的数据)和写入数据库(scrapy爬虫成长日记之将抓取内容写入mysql数据库).然而,这个爬虫的功能还是过于弱小,一旦目标网站设置了爬虫的限制,我们的爬虫也就失效了.因此这里重点讲述一下如何避免scrapy爬虫被ban.本门的所有内容都是基于前面两篇文章的基础上完成的,如果您错过了可以点击此回看:scrapy爬虫成长日记之创建工程-抽取数据-保存为json格

java-利用crawler4j做网络爬虫如何抓取特定标题和发表时间

问题描述 利用crawler4j做网络爬虫如何抓取特定标题和发表时间 利用crawler4j做网络爬虫如何抓取特定标题和发表时间,地区等,还有什么值得推荐的爬虫工具(java)方向 解决方案 利用crawler4j做网络爬虫,你能抓取到数据的话,然后分析数据就行.特定的标题和发表时间,应该有特定的标识的,检查此标识然后取得想要的数据. 解决方案二: 如果服务器支持rss,那么可以直接从中过滤,不支持rss,就只能先抓取标题和时间字段,然后再下载文章.这个不同的网站是不同的. 虽然理论上可以通过L

网络编程-我想用c在linux上做一个爬虫,但是遇到有些网站不能用ip访问求一个解决方案

问题描述 我想用c在linux上做一个爬虫,但是遇到有些网站不能用ip访问求一个解决方案 比如58同城,我ping出它的ip,然后用浏览器访问,结婚连接不上!求各位大神帮帮忙! 解决方案 用域名访问,在你的http请求中加上host字段,里面写域名

精通Python网络爬虫:核心技术、框架与项目实战.3.1 网络爬虫实现原理详解

 摘要 通过前面章节的学习,我们已经基本认识了网络爬虫,那么网络爬虫应该怎么实现?核心技术又有哪些呢?在本篇中,我们首先会介绍网络爬虫的相关实现原理与实现技术:随后,讲解Urllib库的相关实战内容:紧接着,带领大家一起开发几种典型的网络爬虫,让大家在实战项目中由浅入深地掌握Python网络爬虫的开发:在学会了一些经典的网络爬虫开发之后,我们将一起研究学习Fiddler抓包分析技术.浏览器伪装技术.爬虫定向抓取技术等知识,让大家更加深入地进入到网络爬虫技术的世界中来.   第3章 网络爬虫实现原

精通Python网络爬虫:核心技术、框架与项目实战.1.4 网络爬虫的类型

1.4 网络爬虫的类型 现在我们已经基本了解了网络爬虫的组成,那么网络爬虫具体有哪些类型呢? 网络爬虫按照实现的技术和结构可以分为通用网络爬虫.聚焦网络爬虫.增量式网络爬虫.深层网络爬虫等类型.在实际的网络爬虫中,通常是这几类爬虫的组合体. 首先我们为大家介绍通用网络爬虫(General Purpose Web Crawler).通用网络爬虫又叫作全网爬虫,顾名思义,通用网络爬虫爬取的目标资源在全互联网中.通用网络爬虫所爬取的目标数据是巨大的,并且爬行的范围也是非常大的,正是由于其爬取的数据是海

精通Python网络爬虫:核心技术、框架与项目实战.2.1 网络爬虫技能总览图

摘要 网络爬虫技能总览 在上一章中,我们已经初步认识了网络爬虫,那么网络爬虫具体能做些什么呢?用网络爬虫又能做哪些有趣的事呢?在本章中我们将为大家具体讲解. 2.1 网络爬虫技能总览图 如图2-1所示,我们总结了网络爬虫的常用功能.   图2-1 网络爬虫技能示意图 在图2-1中可以看到,网络爬虫可以代替手工做很多事情,比如可以用于做搜索引擎,也可以爬取网站上面的图片,比如有些朋友将某些网站上的图片全部爬取下来,集中进行浏览,同时,网络爬虫也可以用于金融投资领域,比如可以自动爬取一些金融信息,并

高通宣布Snapdragon不再是处理器,而是一个移动平台

这几年,高通在移动处理器上节节高升,打下了一片稳固的江山,甚至让昔日的芯片巨头英特尔都无法动摇其在移动领域的地位.现在,高通正式将自己的野心昭告天下,宣布 Snapdragon 不再是处理器,而是一个移动平台. 这就意味着,不是把 Snapdragon 称为"Snapdragon 处理器",而是将其称为"Qualcomm Snapdragon 移动平台".重点是高通想开发一个完整的平台,并使其成为行业的一个领头羊. 它的硬件不会改变,Snapdragon 835 仍

精通Python网络爬虫:核心技术、框架与项目实战.1.3 网络爬虫的组成

1.3 网络爬虫的组成 接下来,我们将介绍网络爬虫的组成.网络爬虫由控制节点.爬虫节点.资源库构成. 图1-1所示是网络爬虫的控制节点和爬虫节点的结构关系.   图1-1 网络爬虫的控制节点和爬虫节点的结构关系 可以看到,网络爬虫中可以有多个控制节点,每个控制节点下可以有多个爬虫节点,控制节点之间可以互相通信,同时,控制节点和其下的各爬虫节点之间也可以进行互相通信,属于同一个控制节点下的各爬虫节点间,亦可以互相通信. 控制节点,也叫作爬虫的中央控制器,主要负责根据URL地址分配线程,并调用爬虫节

Scrapy ——如何防止被ban 屏蔽 之策略大集合(六)

话说在尝试设置download_delay小于1,并且无任何其他防止被ban的策略之后,我终于成功的被ban了. 关于scrapy的使用可参见之前文章: http://blog.csdn.net/u012150179/article/details/34913315 http://blog.csdn.net/u012150179/article/details/34486677 http://blog.csdn.net/u012150179/article/details/34441655 ht