2

我开始接触 python,是的,我已经在这个网站和网络上搜索了答案,但不知何故我真的无法让它运行。

我创建了一个蜘蛛类 EbaySpider,驻留在 spider/ebay.py 中,我可以从命令行毫无问题地启动它(即使输出到 JSON 文件)。现在我想从另一个 .py 文件中启动 scrapy,这样我就可以直接访问爬取的数据并将其输出到 GUI(稍后会考虑如何做到这一点)。

我已经从这个问题中获取了代码(提问者代码,因为我不需要多次运行蜘蛛)并添加

from spiders import ebay
from scrapy.crawler import CrawlerProcess

从一开始,手头就有所有必要的资源。

我得到的错误是

ImportError:无法导入名称 ebay。

自然地,我玩弄了importstatement,将其从“ebay”更改为“EbaySpider”,将“spiders”更改为“spiders.ebay”或“projectname.spiders.ebay”,但不知何故,它们似乎都不起作用。

如果你能告诉我如何解决这个问题,或者用另一种方式运行蜘蛛然后访问我的 python 程序中的爬取数据,那就太好了。我对任何有效并且可以理解的东西感到满意:)

感谢人们!

4

2 回答 2

0

您可以尝试python 的相对导入功能从相对于您的 python 脚本的目录中导入模块。您无法导入模块的原因是spiders模块不是您的PYTHON_PATH.

from .spiders import ebay

注意:前面的spiders

于 2013-03-19T20:31:10.090 回答
0

基本上你有三个选择;

  • 将“spiders”目录作为模块安装在您的 PYTHONPATH 中
  • 将“ebay.py”文件放在与脚本相同的目录中,然后import ebay.
  • 修改你的 python 路径,以便 python 可以找到你的蜘蛛。

对于第三个选项,您必须__init__.pyspiders目录中创建一个文件。它可以是空的。然后你必须修改你的脚本如下(假设这spiders是你的程序运行目录的子目录):

import os
import sys
sys.path.append(os.getcwd()+'/spiders')
print sys.path
from spiders import ebay
于 2013-03-19T21:08:02.440 回答