【问题标题】:Trying to run a scrapy crawler from another location within script试图从脚本中的另一个位置运行爬虫
【发布时间】:2013-07-28 10:29:01
【问题描述】:

全部,

我正在尝试完全自动化我的抓取,这由 3 个步骤组成:

1- 获取广告的索引页面列表(非scrapy工作,出于各种原因) 2- 从第一步获得的索引页面中获取广告URL列表(Scrapy工作)

我的scrapy项目在普通目录下:

C:\Python27\Scripts\GetAdUrlsFromIndex_project\GetAdUrlsFromIndex\spiders\GetAdUrls_spider.py (“GetAdUrls_spider”文件中的蜘蛛名称是(name = “getadurls”))

我的自动化步骤 1 和 2 的脚本位于此目录中:

C:\Website_DATA\SCRIPTS\StepByStepLauncher.py

我尝试使用 Scrapy 文档导入爬虫并使用以下代码从脚本内部运行:

from twisted.internet import reactor
from scrapy.crawler import Crawler
from scrapy.settings import Settings
from scrapy import log
from GetAdUrlsFromIndex.spiders.GetAdUrls_spider import getadurls

spider = getadurls(domain='website.com')
crawler = Crawler(Settings())
crawler.configure()
crawler.crawl(spider)
crawler.start()
log.start()
reactor.run() # the script will block here

不幸的是,当我尝试运行此脚本时,我不断收到错误“没有名为 GetAdUrlsFromIndex.spiders.GetAdUrls_spider 的模块”。我尝试将工作目录更改为几个不同的位置,我尝试了名称,但似乎没有任何效果。 .

不胜感激。谢谢!

【问题讨论】:

  • C:\Python27\Scripts\GetAdUrlsFromIndex_project` in your PYTHONPATH`?
  • 嗨,Twil...我实际上根本没有 PYTHONPATH 变量!!。我创建了一个并添加了这个,但仍然无法正常工作......
  • 文件夹GetAdUrlsFromIndexspiders 是否包含__init__.py
  • 是的,它们确实是 twil... 这两个文件夹都包含一个 init.py.. 但是它们都是空白的。我需要在其中包含任何内容吗?

标签: python twisted scrapy


【解决方案1】:

如果您在 C:\Python27\Scripts\GetAdUrlsFromIndex_project\GetAdUrlsFromIndexC:\Python27\Scripts\GetAdUrlsFromIndex_project\GetAdUrlsFromIndex\spiders 中确实有 __init__.py,请尝试以这种方式修改您的脚本

import sys
from twisted.internet import reactor
from scrapy.crawler import Crawler
from scrapy.settings import Settings
from scrapy import log

sys.path.append('C:/Python27/Scripts/GetAdUrlsFromIndex_project')
from GetAdUrlsFromIndex.spiders.GetAdUrls_spider import getadurls

spider = getadurls(domain='website.com')
crawler = Crawler(Settings())
crawler.configure()
crawler.crawl(spider)
crawler.start()
log.start()
reactor.run() # the script will block here

【讨论】:

  • 不客气。如果您有No module named ...,则基本上是PYTHONPATH 的问题,并且可以通过这种方式“治愈”。 PS:顺便接受回答;)
  • 有没有不需要附加系统路径的解决方案?
  • @DaveTheAl 如果您的情况与问题相同,那么您必须以某种方式告诉python 您的主要代码(C:/Python27/Scripts/GetAdUrlsFromIndex_project)在哪里。如果您可以移动主代码,请将其放入site-packages,例如C:/Python27/Lib/site-packages.
  • 谢谢!是否还有类似于python -m 的东西来固定路径,或者类似于PYTHONPATH=$(pwd) python main.py 的东西?
  • @DaveTheAl 抱歉,我没有收到问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-28
  • 2015-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多