我有一點奇怪的一個,我不能讓我的頭在這裏: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無法找到蜘蛛有關。 –