从脚本运行scrapy(初学者)

2 投票
2 回答
1478 浏览
提问于 2025-04-17 19:40

我刚开始学习Python,确实在这个网站和网上搜索过答案,但就是搞不定怎么运行。

我创建了一个叫EbaySpider的爬虫类,放在spider/ebay.py里,可以在命令行中顺利启动(甚至可以把结果输出到一个JSON文件)。现在我想从另一个.py文件中启动scrapy,这样我就可以直接访问爬取的数据,并把它输出到一个图形界面(这个我稍后再想办法)。

我从这个问题中拿了代码(因为我不需要多次运行爬虫,所以用提问者的代码就可以),并在开头添加了

from spiders import ebay
from scrapy.crawler import CrawlerProcess

以便能用到所有必要的资源。

我遇到的错误是

ImportError: cannot import name ebay.

当然,我尝试过修改导入语句,把'ebay'改成'EbaySpider',把'spiders'改成'spiders.ebay'或者'projectname.spiders.ebay',但似乎都不行。

如果你能告诉我怎么解决这个问题,或者有什么其他方法可以运行爬虫并在我的Python程序中访问爬取的数据,那就太好了。我希望能找到任何可行且能理解的方法 :)

谢谢大家!

2 个回答

0

你可以试试Python的相对导入功能,这样可以从与你的Python脚本相对的目录中导入模块。你之所以不能导入这个模块,是因为spiders模块不在你的PYTHON_PATH中。

from .spiders import ebay

注意:在spiders前面有一个

0

基本上,你有三种选择:

  • 把'spiders'文件夹当作一个模块安装到你的PYTHONPATH中。
  • 把'ebay.py'文件放在和你的脚本同一个文件夹里,然后直接用import ebay来导入。
  • 修改你的python路径,这样python就能找到你的spider了。

对于第三种选择,你需要在spiders文件夹里创建一个__init__.py文件。这个文件可以是空的。然后你需要按照下面的方式修改你的脚本(假设spiders是你程序运行的目录下的一个子文件夹):

import os
import sys
sys.path.append(os.getcwd()+'/spiders')
print sys.path
from spiders import ebay

撰写回答