我有一点奇怪的一个,我不能让我的头在这里:Scrapy - 无法在父文件夹从脚本中调用刮刀scrapy项目
我设置一个webscraper使用Scrapy和它执行时,我从CLI运行以下文件刮精($ python journal_scraper.py
):
journal_scraper.py:
from scrapy.crawler import CrawlerProcess
from scrapy.utils.project import get_project_settings
def checkForUpdates():
process = CrawlerProcess(get_project_settings())
process.crawl('journal')
process.crawl('article')
process.start()
if __name__ == '__main__':
checkForUpdates()
的process
能够找到两个十字journal
和article
没有问题。现在
,我想称之为刮由于我是从父文件夹发展得如此之到Scrapy项目的应用程序内的许多步骤之一我导入journal_scraper.py
到我main.py
文件,并尝试运行checkForUpdates()
功能:
main.py:
from scripts.journal_scraper import checkForUpdates
checkForUpdates()
,我得到以下几点:
2016-01-10 20:30:56 [scrapy] INFO: Scrapy 1.0.4 started (bot: scrapybot)
2016-01-10 20:30:56 [scrapy] INFO: Optional features available: ssl, http11
2016-01-10 20:30:56 [scrapy] INFO: Overridden settings: {}
Traceback (most recent call last):
File "main.py", line 13, in <module>
checkForUpdates()
File "/Users/oldo/Python/projects/AMS-Journal-Scraping/AMS_Journals/scripts/journal_scraper.py", line 8, in checkForUpdates
process.crawl('journal')
File "/Users/oldo/Python/virtual-environments/AMS-Journal/lib/python2.7/site-packages/scrapy/crawler.py", line 150, in crawl
crawler = self._create_crawler(crawler_or_spidercls)
File "/Users/oldo/Python/virtual-environments/AMS-Journal/lib/python2.7/site-packages/scrapy/crawler.py", line 165, in _create_crawler
spidercls = self.spider_loader.load(spidercls)
File "/Users/oldo/Python/virtual-environments/AMS-Journal/lib/python2.7/site-packages/scrapy/spiderloader.py", line 40, in load
raise KeyError("Spider not found: {}".format(spider_name))
KeyError: 'Spider not found: journal'
我也试着改变main.py
到:
import subprocess
subprocess.call('python ./scripts/scraper.py', shell=True)
其产生同样的错误。
我敢肯定,这事做的事实,我调用此函数构成的父文件夹,因为如果我在同一个文件夹一个小的测试脚本journal_scraper.py
,做同样的事情main.py
的刮板按预期运行。
从Scrapy项目外部的脚本调用scrapers是否存在某种限制?
如果我的情况不明确,请询问更多详情。
你试图把一个空文件entitled___init___.py的文件夹中,你要从中导入(两个强调init的每一侧)?通常这可能是导入自定义函数导入失败的原因 – Chris
@Chris是的,有一个'__init __。py'文件。导入并调用'checkForUpdates()'函数不是问题,这与Scrapy无法找到蜘蛛有关。 –