Scrapy的Ip代理的配置(未完成)

原创 2015年07月08日 21:04:36

1、编写代理中间件

这是最直接的方式,也是能够比较快速实现的。前提是你需要拥有可用的代理ip。网上有一些免费的代理ip资源可以使用,但是往往都不稳定。如果有条件可以买一些IP代理来使用。

代理中间件的代码如下所示:

import random
class ProxyMiddleware(object):
    # overwrite process request
    def process_request(self, request, spider):
        # Set the location of the proxy
        proxy_ip = random.choice(self.user_agent_ip_list)
        request.meta['proxy'] = proxy_ip
        print '+'*8, 'the Current ip address is', proxy_ip, '+'*8

    # ip from http://pachong.org/
    user_agent_ip_list = [\
        "http://122.96.59.102:81",
        "http://14.18.238.177:4040",
        "http://144.112.91.97:90",
        "http://124.202.169.54:8118"
       ]

代理中间件代码编写完成后,还要修改一下配置文件,如下所示:

DOWNLOADER_MIDDLEWARES = {
    'scrapy.contrib.downloadermiddleware.httpproxy.HttpProxyMiddleware': 110,
    'weiboscrapy.rotate_ipagent.ProxyMiddleware': 100,
    }


在没有计划购买代理ip,免费代理ip又不能满足需求的情况下,可以考虑曲线救国的策略。我主要参考了如下几种方式:


2、Scrapy+Goagent策略

Goagent是google的代理项目,使用它你可以通过google的服务器去访问目的站点,也就实现了ip代理的功能。但是Goagent项目特别注明了,他的ip不是匿名的,所以这个策略能起到的效果还是很有限的。

使用这个策略只需要将1中代理中间件中的代理ip设置为Goagent代理ip即可。

proxy_ip = “https://127.0.0.1:8087”
前提是你在自己的电脑上安装了Goagent或者XX-Net(内部集成了Goagent)。

备注:如果你想抓取国外被XX的网站,这也是一个不错的选择。

3、Scrapy+Crawlera策略

Crawlera是Scrapinghub公司提供的一个下载的中间件,其提供了很多服务器和ip,scrapy可以通过Crawlera向目标站点发起请求。

该文章对scrapy使用Crawlera做了比较好的介绍,可以参考。

详细信息可以参考官方文档: http://doc.scrapinghub.com/crawlera.html

最重要的是需要在配置文件里,配置开启Crawlera中间件。如下所示:

DOWNLOADER_MIDDLEWARES = {
    # ********CRAWLERA SETTING********
    'scrapy_crawlera.CrawleraMiddleware': 600
    }
然后要添加以下配置信息:

# ********CRAWLERA SETTING********
CRAWLERA_ENABLED = True
CRAWLERA_USER = '3401ccde103a4e3099c1420dee5aeb0b'
CRAWLERA_PASS = ''
CRAWLERA_PRESERVE_DELAY = True
其中CRAWLERA_USER是注册crawlera之后申请到的API Key;是
CRAWLERA_PASS<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">则代表crawlera的password,关于是否填写password,参考官网上的一句话,如下图所示。</span>

我因为这个错误,浪费了好长时间,一般默认是不填写的,空白即可。


在配置完成后,使用crawlera中间件访问“http://www.weibo.com”出现如下错误:

[<twisted.python.failure<class 'twisted.internet.error.ConnectionLost'>>]


搞了半天没搞明白,后来尝试访问别的url地址,结果就没有这个错误了:


不知道是怎么搞的。主要是对Twisted模块也不是很熟,这个问题暂时没有解决。

4、Scrapy+Tor(高度匿名的免费代理)

XX-Net在Github首页上指明其本身不是匿名的,向用户推荐了Tor这个工具。暂时还没有实现,待验证。

http://pkmishra.github.io/blog/2013/03/18/how-to-run-scrapy-with-TOR-and-multiple-browser-agents-part-1-mac/

未完待续...

版权声明:本文为博主摘抄/总结文章,开放/自由可随意转载。

相关文章推荐

用scrapy获取代理ip地址

items.py -*- coding: utf-8 -*-# Define here the models for your scraped items # # See documentation ...

第1.7章 scrapy之ip代理的使用

1 代理中间件 代码核心在于随机选择一条代理的ip和port,至于代理ip和port的来源,可以是购买的ip代理,也可以从网上爬取的。# -*- coding: utf-8 -*- ''' Crea...
  • warrah
  • warrah
  • 2017年06月21日 14:19
  • 456

scrapy: 使用HTTP代理绕过网站反爬虫机制

https://github.com/kohn/HttpProxyMiddleware https://github.com/cocoakekeyu/autoproxy http://blog.cs...

【scrapy ip代理池】如何解决ip被限制的问题

1、首先写一个脚本proxies.py 自动获取代理ip# *-* coding:utf-8 *-* import requests from bs4 import BeautifulSoup im...

scrapy解决网站对IP有限制防抓取功能

1.解决办法:

Scrapy爬虫入门教程十三 Settings(设置)

Scrapy爬虫入门教程十三 Settings(设置)
  • Inke88
  • Inke88
  • 2017年03月13日 11:24
  • 2741

浅谈scrapy框架的使用

浅谈scrapy框架的使用scrapy框架是一款基于python的爬虫框架,从这个框架的项目构造形式,我们可以看出它主要分为spider.py pipeline.py item.py decorato...

Ubuntu12 安装XX-Net完整流程

先奉上XX-Net的Git官网https://github.com/XX-net/XX-Net,至于XX-Net是什么就不用详细介绍了吧!(全新GoAgent/GoGotest一体化集成软件,GoAg...

Python-Scrapy 个人兴趣教程(二):没错,从代理IP开始

想要在Scrapy领域无限制畅游,做好伪装是第一步,于是乎,抓取代理IP成了很多教程的开始部分。 我十分同意这个观点,既有实际用处,又能作为一个教学,当然,对于初次使用scrapy的我,很多东西也只...

scrapy代理的配置方法

根据最新的scrapy官方文档,scrapy爬虫框架的代理配置有以下两种方法:一.使用中间件DownloaderMiddleware进行配置使用Scrapy默认方法scrapy startprojec...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Scrapy的Ip代理的配置(未完成)
举报原因:
原因补充:

(最多只允许输入30个字)