从脚本运行scrapy(初学者)
我刚开始学习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