2017-02-15 3 views
0

Я создал новый проект, как следоватьScrapy не загружается при запуске HttpProxyMiddleware

scrapy startproject test 
scrapy genspider test1 example.com 

и изменить settings.py следующим образом:

# -*- coding: utf-8 -*- 

# Scrapy settings for test project 
# 
# For simplicity, this file contains only settings considered important or 
# commonly used. You can find more settings consulting the documentation: 
# 
#  http://doc.scrapy.org/en/latest/topics/settings.html 
#  http://scrapy.readthedocs.org/en/latest/topics/downloader-middleware.html 
#  http://scrapy.readthedocs.org/en/latest/topics/spider-middleware.html 

BOT_NAME = 'test' 

SPIDER_MODULES = ['test.spiders'] 
NEWSPIDER_MODULE = 'test.spiders' 


# Crawl responsibly by identifying yourself (and your website) on the user-agent 
#USER_AGENT = 'test (+http://www.yourdomain.com)' 

# Obey robots.txt rules 
ROBOTSTXT_OBEY = True 

# Configure maximum concurrent requests performed by Scrapy (default: 16) 
#CONCURRENT_REQUESTS = 32 

# Configure a delay for requests for the same website (default: 0) 
# See http://scrapy.readthedocs.org/en/latest/topics/settings.html#download-delay 
# See also autothrottle settings and docs 
#DOWNLOAD_DELAY = 3 
# The download delay setting will honor only one of: 
#CONCURRENT_REQUESTS_PER_DOMAIN = 16 
#CONCURRENT_REQUESTS_PER_IP = 16 

# Disable cookies (enabled by default) 
#COOKIES_ENABLED = False 

# Disable Telnet Console (enabled by default) 
#TELNETCONSOLE_ENABLED = False 

# Override the default request headers: 
#DEFAULT_REQUEST_HEADERS = { 
# 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 
# 'Accept-Language': 'en', 
#} 

# Enable or disable spider middlewares 
# See http://scrapy.readthedocs.org/en/latest/topics/spider-middleware.html 
#SPIDER_MIDDLEWARES = { 
# 'test.middlewares.MyCustomSpiderMiddleware': 543, 
#} 

# Enable or disable downloader middlewares 
# See http://scrapy.readthedocs.org/en/latest/topics/downloader-middleware.html 
DOWNLOADER_MIDDLEWARES = { 
    'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware': 110, 
} 

# Enable or disable extensions 
# See http://scrapy.readthedocs.org/en/latest/topics/extensions.html 
#EXTENSIONS = { 
# 'scrapy.extensions.telnet.TelnetConsole': None, 
#} 

# Configure item pipelines 
# See http://scrapy.readthedocs.org/en/latest/topics/item-pipeline.html 
#ITEM_PIPELINES = { 
# 'test.pipelines.SomePipeline': 300, 
#} 

# Enable and configure the AutoThrottle extension (disabled by default) 
# See http://doc.scrapy.org/en/latest/topics/autothrottle.html 
#AUTOTHROTTLE_ENABLED = True 
# The initial download delay 
#AUTOTHROTTLE_START_DELAY = 5 
# The maximum download delay to be set in case of high latencies 
#AUTOTHROTTLE_MAX_DELAY = 60 
# The average number of requests Scrapy should be sending in parallel to 
# each remote server 
#AUTOTHROTTLE_TARGET_CONCURRENCY = 1.0 
# Enable showing throttling stats for every response received: 
#AUTOTHROTTLE_DEBUG = False 

# Enable and configure HTTP caching (disabled by default) 
# See http://scrapy.readthedocs.org/en/latest/topics/downloader-middleware.html#httpcache-middleware-settings 
#HTTPCACHE_ENABLED = True 
#HTTPCACHE_EXPIRATION_SECS = 0 
#HTTPCACHE_DIR = 'httpcache' 
#HTTPCACHE_IGNORE_HTTP_CODES = [] 
#HTTPCACHE_STORAGE = 'scrapy.extensions.httpcache.FilesystemCacheStorage' 

, как вы можете видеть, я установил

, но теперь, когда я запускаю паука с scrapy crawl test1, я получаю следующий вывод:

2017-02-15 20:37:52 [scrapy] INFO: Enabled extensions: 
['scrapy.extensions.corestats.CoreStats', 
'scrapy.extensions.telnet.TelnetConsole', 
'scrapy.extensions.logstats.LogStats'] 
2017-02-15 20:37:52 [scrapy] INFO: Enabled downloader middlewares: 
['scrapy.downloadermiddlewares.robotstxt.RobotsTxtMiddleware', 
'scrapy.downloadermiddlewares.httpauth.HttpAuthMiddleware', 
'scrapy.downloadermiddlewares.downloadtimeout.DownloadTimeoutMiddleware', 
'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware', 
'scrapy.downloadermiddlewares.retry.RetryMiddleware', 
'scrapy.downloadermiddlewares.defaultheaders.DefaultHeadersMiddleware', 
'scrapy.downloadermiddlewares.redirect.MetaRefreshMiddleware', 
'scrapy.downloadermiddlewares.httpcompression.HttpCompressionMiddleware', 
'scrapy.downloadermiddlewares.redirect.RedirectMiddleware', 
'scrapy.downloadermiddlewares.cookies.CookiesMiddleware', 
'scrapy.downloadermiddlewares.chunked.ChunkedTransferMiddleware', 
'scrapy.downloadermiddlewares.stats.DownloaderStats'] 
2017-02-15 20:37:52 [scrapy] INFO: Enabled spider middlewares: 
['scrapy.spidermiddlewares.httperror.HttpErrorMiddleware', 
'scrapy.spidermiddlewares.offsite.OffsiteMiddleware', 
'scrapy.spidermiddlewares.referer.RefererMiddleware', 
'scrapy.spidermiddlewares.urllength.UrlLengthMiddleware', 
'scrapy.spidermiddlewares.depth.DepthMiddleware'] 

как вы можете видеть HttpProxyMiddleware не загружается.

Почему HttpProxyMiddleware не загружается?

Edit: Я установил Scrapy 1.1.1

ответ

1

Это промежуточное программное обеспечение по умолчанию включена в DOWNLOADER_MIDDLEWARES_BASE

см documentation of DOWNLOADER_MIDDLEWARES_BASE

Список DOWNLOADER_MIDDLEWARES_BASE значений:

{ 
    'scrapy.downloadermiddlewares.robotstxt.RobotsTxtMiddleware': 100, 
    'scrapy.downloadermiddlewares.httpauth.HttpAuthMiddleware': 300, 
    'scrapy.downloadermiddlewares.downloadtimeout.DownloadTimeoutMiddleware': 350, 
    'scrapy.downloadermiddlewares.defaultheaders.DefaultHeadersMiddleware': 400, 
    'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware': 500, 
    'scrapy.downloadermiddlewares.retry.RetryMiddleware': 550, 
    'scrapy.downloadermiddlewares.ajaxcrawl.AjaxCrawlMiddleware': 560, 
    'scrapy.downloadermiddlewares.redirect.MetaRefreshMiddleware': 580, 
    'scrapy.downloadermiddlewares.httpcompression.HttpCompressionMiddleware': 590, 
    'scrapy.downloadermiddlewares.redirect.RedirectMiddleware': 600, 
    'scrapy.downloadermiddlewares.cookies.CookiesMiddleware': 700, 
    'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware': 750, 
    'scrapy.downloadermiddlewares.stats.DownloaderStats': 850, 
    'scrapy.downloadermiddlewares.httpcache.HttpCacheMiddleware': 900, 
} 
+0

странно, даже если он работает и включен, он не отображается в журнале вывода, как указывает ваш вопрос. Может быть, это ошибка со скрипом? – Granitosaurus

+0

Да, я читал документы, но при загрузке он не загружается. Если я удалю '' scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware ': 110, 'из' DOWNLOADER_MIDDLEWARES', вывод будет точно таким же, HttpProxyMiddleware не загружается – RdlP

+0

@RdlP работает ли это? если вы добавите 'meta = {'proxy': 'http: // someproxy'}'. – Granitosaurus

0

Вы пробовали установить прокси-сервер в пауке?

Делайте это с request объекта, как этот

req = Request(**all params here**) 
req.meta['proxy'] = "proxy ip here"; 
yield req 
0

В настоящее время (по состоянию на версии 1.3.2), то HttpProxyMiddleware не включен, если ни http_proxy или https_proxy переменные среды определяются (source).

Однако это не означает, что ответы не могут быть загружены через прокси. Пример, опубликованный @Granitosaurus, работает на уровне обработчика загрузчика (source).

Существует recent PR, еще не выпущенный в PyPI, который позволяет по умолчанию использовать промежуточное программное обеспечение и обеспечивает настройку (HTTPPROXY_ENABLED), чтобы отключить его, если необходимо.

Смежные вопросы