我尝试像文档中所说的那样运行多个爬网。脚本通过调用scrapy crawl crawler
。
现在通过python crawler.py
调用它,我会收到以下错误:
来自crawler.items导入linkItem
modulenotfounderror:没有名为" crawler.items"的模块;"爬行者"不是包装
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
我认为这是一种python路径问题。您可以通过python
解释器而不是Scrapy
运行脚本,因此必须确保Python
知道您的软件包在哪里。如果您以Scrapy
命令运行,那么scrapy将通过scrapy.cfg
照顾它。
最简单的方法是将您的项目路径附加到PYTHONPATH
。例如export PYTHONPATH=YOUR_PROJECT_PATH:$PYTHONPATH
。您可能需要将其添加到.bashrc
文件中。
还有其他解决方案,例如,遵循包装的分布,将您的项目安装到站点包装python库中。
谢谢。