我试图通过一个脚本运行一个scrapy,但我认为get_project_settings()并没有指向我的settings.py,不管它们是在同一个目录中。
由于某些原因,当我在VSCODE中选择“运行代码”而不是“在终端中运行”时,它有时会起作用。
脚本:
import os
import sys
sys.path.append("C:\\Users\\Denze\\Projects\\testing\\amazonScraper\\amazonScraper")
from scrapy.crawler import CrawlerProcess
from scrapy.utils.project import get_project_settings
from spiders.amazon_spider import AmazonSpider
class SpiderRunner():
def __init__(self, spiderName):
print("--REACTOR START INFO--")
self.process = CrawlerProcess(get_project_settings())
print("--REACTOR END--")
self.spiderName = spiderName
def scrape(self):
self.process.crawl(self.spiderName)
self.process.start()
SpiderRunner(AmazonSpider).scrape()当scrapy作为活动状态运行时,我的流水线不会显示在控制台中,但我的刮板运行。我该如何解决这个问题?
控制台流水线:
2021-08-03 16:35:52 [scrapy.middleware] INFO: Enabled item pipelines:
[]发布于 2021-08-04 10:18:11
settings.py位置由settings.cfg定义,例如
; settings.cfg
[settings]
default = spider_name.settings从您的描述中可以看出,VSCode中的“运行代码”显然不是从项目根目录开始的,也无法获取settings.cfg。
让我们试试这个,
import os
import sys
PROJECT_ROOT = "C:\\Users\\Denze\\Projects\\testing\\amazonScraper"
os.chdir(PROJECT_ROOT)
from scrapy.crawler import CrawlerProcess
...顺便说一句,你可能不需要直接使用CrawlProcess。scrapy提供了从脚本启动爬行器的cmdline。
import os
PROJECT_ROOT = "C:\\Users\\Denze\\Projects\\testing\\amazonScraper"
os.chdir(PROJECT_ROOT)
from scrapy import cmdline
cmdline.execute("scrapy crawl myspidername".split())CrawlerProcess的唯一优势是它支持同时启动多个爬行器。
https://stackoverflow.com/questions/68643055
复制相似问题