使用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工作)