【问题标题】:How to setting proxy in Python Scrapy [duplicate]如何在 Python Scrapy 中设置代理
【发布时间】:2017-08-01 03:11:51
【问题描述】:

我使用过 Python 2.7 和 Scrapy 1.3.0

我需要设置代理才能访问网络

如何设置?

这是我的解析脚本

if theurl not in self.ProcessUrls:
   self.ProcessUrls.append(theurl)
   yield scrapy.Request(theurl, callback=self.parse)

如果我需要确认爬取新的不重复怎么办?如果不重复需要抓取这个新的 url

【问题讨论】:

  • 我无法设置环境变量,会影响其他服务和工作,我可以在scrapy Script上设置吗?
  • 查看上面链接中的第二个答案
  • 在哪里可以设置 request.meta?

标签: python scrapy


【解决方案1】:

我们可以使用以下内容:

request = Request(url="http://example.com")
request.meta['proxy'] = "host:port"
yield request

一个简单的实现如下:

import scrapy

class MySpider(scrapy.Spider):
    name = "examplespider"
    allowed_domains = ["somewebsite.com"]
    start_urls = ['http://somewebsite.com/']

    def parse(self, response):
        # Here example.com is used. We usually get this URL by parsing desired webpage
        request = scrapy.Request(url='example.com', callback=self.parse_url)
        request.meta['proxy'] = "host:port"
        yield request

    def parse_url(self, response):
        # Do rest of the parsing work
        pass

如果您想在初始时使用代理:

将以下内容添加为蜘蛛类字段

class MySpider(scrapy.Spider):
        name = "examplespider"
        allowed_domains = ["somewebsite.com"]
        start_urls = ['http://somewebsite.com/']
        custom_settings = {
        'HTTPPROXY_ENABLED': True
    }

然后使用start_requests()方法如下:

    def start_requests(self):
        urls = ['example.com']
        for url in urls:
            proxy = 'some proxy'
            yield scrapy.Request(url=url, callback=self.parse, meta={'proxy': proxy})

    def parse(self, response):
        item = StatusCehckerItem()
        item['url'] = response.url
        return item

【讨论】:

  • 我可以在初始设置代理吗?
  • 在哪里可以添加 custom_settings ?
  • 我在哪里可以获得 HTML 响应?解析?解析函数在start_request下?
  • 我可以只使用 start_urls 吗? urls = ['example.com'] 我可以这样做吗?urls = self.start_urls ?
  • 是的,你可以这样做。解析函数也不在 start_requests 函数中。见编辑。您也可以在解析函数中找到 html
【解决方案2】:

您必须设置http_proxyhttps_proxy 环境变量。参考这个:proxy for scrapy

【讨论】:

  • 我无法设置环境变量,会影响其他服务和工作,我可以在scrapy Script上设置吗?
  • 你试过这个scrapy_proxies
  • 是的,我试过这个,但我不知道 DOWNLOADER_MIDDLEWARES 的价值是什么?如果我只有一个代理需要设置它仍然需要读取文本文件?
猜你喜欢
  • 2013-09-26
  • 1970-01-01
  • 1970-01-01
  • 2012-07-28
  • 2012-07-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多