請有人幫我找出我找不到解決方案的exceptions.ImportError:沒有模塊命名中間件由我的代碼拋出。Scrapy- exceptions.ImportError:沒有模塊命名中間件
我的文件夾結構是:
這裏是我的DOWNLOADER_MIDDLEWARES在settings.py:
DOWNLOADER_MIDDLEWARES = {
'IpRotation.middlewares.MyCustomDownloaderMiddleware': 543,
'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware': None,
'IpRotation.ProxyMiddleware.ProxyMiddleware': 800,
'scrapy.downloadermiddleware.useragent.UserAgentMiddleware' : None,
'IpRotation.RotateUserAgentMiddleware.RotateUserAgentMiddleware':350
}
我的蜘蛛程序:
import scrapy
class DmozSpider(scrapy.Spider):
name = "dmoz"
allowed_domains = ["dmoz.org"]
start_urls = [
"http://www.dmoz.org/Computers/Programming/Languages/Python/Books/",
"http://www.dmoz.org/Computers/Programming/Languages/Python/Resources/"
]
def parse(self, response):
filename = response.url.split("/")[-2] + '.html'
with open(filename, 'wb') as f:
f.write(response.body)
我的自定義UserAgent的Middleware.py:
import logging
import random
import scrapy
from scrapy.downloadermiddlewares.useragent import UserAgentMiddleware
class RotateUserAgentMiddleware(UserAgentMiddleware):
def __init__(self, user_agent=''):
self.user_agent = user_agent
def process_request(self, request, spider):
user_agent_list = [....]
ua = random.choice(user_agent_list)
if ua:
request.headers.setdefault('User-Agent', ua)
spider.log(
u'User-Agent: {} {}'.format(request.headers.get('User-Agent'), request)
我的自定義IPRotationMiddleWare.py:
import random
from scrapy.downloadermiddlewares.httpproxy import HttpProxyMiddleware
class ProxyMiddleware(HttpProxyMiddleware):
def __init__(self, proxy_ip=''):
self.proxy_ip = proxy_ip
def process_request(self,request,spider):
ip = random.choice(self.proxy_list)
if ip:
request.meta['proxy']= ip
proxy_list = [.......]
我無法找到指定的異常的中間件的問題。
保持簡單,我需要使用scrapy來發送代理請求。所以我重寫了UserAgentMiddleware類和HttpProxyMiddleware類,一切都很相似。現在我的問題是,我需要在middleware.py模塊中實現。在我的場景中,我完全不知道middleware.py的實現。 –