我尝试在docs中运行多个抓取工具。该脚本通过调用scrapy crawl crawler
运行。
现在通过python crawler.py
调用它,我收到以下错误:
来自crawler.items的导入LinkItem
ModuleNotFoundError:没有名为'crawler.items'的模块; 'crawler'不是包
import scrapy
from scrapy.spiders import CrawlSpider, Rule
from scrapy.linkextractors import LinkExtractor
from scrapy.crawler import CrawlerProcess
from crawler.items import LinkItem
from crawler.settings import DB_CREDS
有谁知道如何处理这个问题?
我的项目名为crawler。这可能是个问题吗?
层次:
Crawler
|-crawler
| |-__pycache__
| | |-...
| |-spiders
| | |-__pycache__
| | |-__init__.py
| | |-crawler.py
| |-__init__.py
| |-items.py
| |-middlewares.py
| |-pipelines.py
| |-settings.py
|-scrapy.cfg
答案 0 :(得分:0)
我认为这是一种Python路径问题。您使用python
解释程序而非Scrapy
运行脚本,因此您必须确保Python
知道您的程序包在哪里。如果您以Scrapy
命令运行,那么scrapy会在scrapy.cfg
处理它。
解决问题的最简单方法是将项目路径追加到PYTHONPATH
。例如export PYTHONPATH=YOUR_PROJECT_PATH:$PYTHONPATH
。您可能需要将其添加到.bashrc
文件中。
还有其他解决方案,例如,按照软件包的分发将项目安装到site-packages python库中。
感谢。