Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Scrapy:meta[';proxy';]或meta[';proxy';]?_Python_Scrapy - Fatal编程技术网

Python Scrapy:meta[';proxy';]或meta[';proxy';]?

Python Scrapy:meta[';proxy';]或meta[';proxy';]?,python,scrapy,Python,Scrapy,我是scrapy的新手。我在scrapy spider中使用自定义代理,但如果使用 与使用request.meta['proxy']相比,spider可以很好地工作 这是调试消息的一部分,如果我使用request.meta['proxy'] 2018-09-07 15:48:45 [scrapy.core.engine] INFO: Spider opened 2018-09-07 15:48:45 [scrapy.extensions.logstats] INFO: Crawled 0 pag

我是scrapy的新手。我在scrapy spider中使用自定义代理,但如果使用 与使用request.meta['proxy']相比,spider可以很好地工作

这是调试消息的一部分,如果我使用request.meta['proxy']

2018-09-07 15:48:45 [scrapy.core.engine] INFO: Spider opened
2018-09-07 15:48:45 [scrapy.extensions.logstats] INFO: Crawled 0 pages (at 0 pages/min), scraped 0 items (at 0 items/min)
2018-09-07 15:48:45 [scrapy.extensions.telnet] DEBUG: Telnet console listening on 127.0.0.1:6023
2018-09-07 15:49:45 [scrapy.extensions.logstats] INFO: Crawled 0 pages (at 0 pages/min), scraped 0 items (at 0 items/min)
2018-09-07 15:50:45 [scrapy.extensions.logstats] INFO: Crawled 0 pages (at 0 pages/min), scraped 0 items (at 0 items/min)
2018-09-07 15:51:45 [scrapy.extensions.logstats] INFO: Crawled 0 pages (at 0 pages/min), scraped 0 items (at 0 items/min)
2018-09-07 15:51:45 [scrapy.downloadermiddlewares.retry] DEBUG: Retrying <GET https://www.example.com/robots.txt> (failed 1 times): User timeout caused connection failure: Getting https://www.example.com/robots.txt took longer than 180.0 seconds..
2018-09-07 15:52:45 [scrapy.extensions.logstats] INFO: Crawled 0 pages (at 0 pages/min), scraped 0 items (at 0 items/min)
更新:我已经解决了前面的问题。但是我不知道为什么我的meta['proxy']是错误的,我的免费代理使用
请求。get('https://www.example.com/,proxy={“http”:“http://{}.format(proxy)})
,它运行良好并返回
,那么我的代码怎么了

我的设置:

DOWNLOADER_MIDDLEWARES = {
    'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware':135,
     'ip_proxy.middlewares.CustomProxyMiddleware':125
}
我的蜘蛛:

 def start_requests(self):
    yield scrapy.Request(url="https://www.example.com",callback=self.parse_first)
我的客户代理中间件

class CustomProxyMiddleware(object):

  def __init__(self, settings):
      pass
  def process_request(self, request, spider):
      request.meta['proxy'] = "https://60.169.1.145:808"

  @classmethod
  def from_crawler(cls, crawler):
      return cls(crawler.settings)

要使用代理服务器发送请求,应使用
meta['proxy']
。看起来您的代理服务器出现了一些问题,这就是为什么它无法刮取页面,从而导致超时错误。这也可能是因为您使用了免费代理


您的爬行器使用
meta['proxy']
的原因是设置此元素不会影响任何内容,并且请求是从本地IP发送的。

要使用代理服务器发送请求,您应该使用
meta['proxy']
。看起来您的代理服务器出现了一些问题,这就是为什么它无法刮取页面,从而导致超时错误。这也可能是因为您使用了免费代理


您的爬行器使用
meta['proxies']
的原因是设置此元素不会影响任何内容,请求是从您的本地IP发送的。

您是对的,但我使用了
requests.get('https://https://www.example.com/,proxy={“http”:“http://{}.format(proxy)})
。它返回
,这意味着我的免费代理还可以,所以我很困惑。我不确定我的代码是否有问题,我更新了我的问题。你是对的,但我使用了
请求。获取('https://https://www.example.com/,proxy={“http”:“http://{}.format(proxy)})
。它返回
,表示我的免费代理正常,所以我很困惑。我不确定我的代码是否有问题,我更新了我的问题。最后一个代码片段有错误的缩进。你在使用什么代理?我猜您的服务器的IP没有输入代理的授权IP部分。最后一个代码段有错误的缩进。您使用的代理是什么?我猜您服务器的IP没有输入代理的授权IP部分。
class CustomProxyMiddleware(object):

  def __init__(self, settings):
      pass
  def process_request(self, request, spider):
      request.meta['proxy'] = "https://60.169.1.145:808"

  @classmethod
  def from_crawler(cls, crawler):
      return cls(crawler.settings)