使用Scrapy,得到“Error:ImportError:No module named testspiders.spiders.followall”
我正在尝试从脚本运行Scrapy,并一直在这里按照教程。 我遇到一个错误消息,指出Error: ImportError: No module named testspiders.spiders.followall
。 我一直在寻找解决scheme,但还没有find一个匹配。
我实际上是通过node.js来运行这个python脚本的,它有一个名为python-shell的模块,它只是允许你使用下面的简单代码运行一个python脚本:
var PythonShell = require('python-shell'); PythonShell.run('my_script.py', function (err) { if (err) throw err; console.log('finished'); });
逐字,我的代码是从scrapy网站复制的:
from twisted.internet import reactor from scrapy.crawler import Crawler from scrapy import log, signals from testspiders.spiders.followall import FollowAllSpider from scrapy.utils.project import get_project_settings spider = FollowAllSpider(domain='scrapinghub.com') settings = get_project_settings() crawler = Crawler(settings) crawler.signals.connect(reactor.stop, signal=signals.spider_closed) crawler.configure() crawler.crawl(spider) crawler.start() log.start() reactor.run()
我的目录结构只是通过添加python目录和文件,以及使用python-shell的几行代码,才从express框架中修改:
-python-node -bin -node_modules -public -python -my_script.py -routes -views -app.js -package.json
注意:这也不起作用,如果我进入python目录并运行python my_script.py
,并得到相同的错误消息: ImportError: No module named testspiders.spiders.followall
当用scrapy
运行爬虫时,scraper根目录(testpiders /的父目录)会自动添加到path中。 当用python
运行脚本时,情况并非如此。 你有工作目录,无论在PATH和PYTHONPATH中定义。
您可以使用sys.path
检查python中的当前path
因此,要使用python
进行导入语句,您可以:
- 添加testspiders /父目录path与sys.path.append()(必须在导入testspiders …语句之前)
- 将父目录添加到PYTHONPATH系统variables
- 从testspiders的父目录运行
python
命令/ - 编辑导入语句(所以它们根据你的PATH工作)