我正在编写一个独立的抓取脚本(update.py),它实现了自定义下载器中间件。
该脚本当前使用此处和此处记录的 CrawlerProcess() API 。
它看起来像这样:
from scrapy.crawler import CrawlerProcess
import scrapy
class CustomMiddleware(object):
.... custom middleware definition
settings = {'LOG_LEVEL' :'INFO',
'COOKIES_ENABLED' : False,
'DOWNLOADER_MIDDLEWARES' : {
'update.CustomMiddleware': 400,
}
}
class CarvanaSpider(scrapy.Spider)
... Spider definition
process = CrawlerProcess(settings)
process.crawl(CarvanaSpider)
process.start()
Run Code Online (Sandbox Code Playgroud)
该脚本返回错误:“没有名为‘update’的模块”
如果我将 update.CustomMiddleware 替换为 CustomMiddleware,它将返回“不是有效路径”
我知道 get_project_settings() 实用程序,但我的脚本不能位于项目文件夹中,并且必须能够在没有任何其他文件的情况下运行。
这是可以实现的吗?如果可以,实现这一目标的最佳方法是什么?
小智 0
您需要单独的中间件文件并在脚本之上导入中间件。
class CustomMiddleware(object): ....自定义中间件定义
这个类将在 middleware.py 中
并且在设置中只添加这样的
settings = {'LOG_LEVEL' :'INFO',
'COOKIES_ENABLED' : False,
'DOWNLOADER_MIDDLEWARES' : {
'middleware.CustomMiddleware': 400,
}
}
Run Code Online (Sandbox Code Playgroud)
并且 middleware.py 和您的脚本都在同一目录中。
| 归档时间: |
|
| 查看次数: |
2300 次 |
| 最近记录: |