【问题标题】:Import Error when trying to import scrapy spider into django尝试将scrapy spider导入django时出现导入错误
【发布时间】:2015-10-10 05:53:32
【问题描述】:

当用户提出请求时,我正在尝试从 django 项目中运行 scrapy 蜘蛛,因此我目前正在测试来自 scrapy docs 的代码以从脚本中运行蜘蛛。为了测试如何将蜘蛛导入到 django 项目中,我在 django 项目中添加了一个文件,该文件位于我放置 scrapy 蜘蛛的同一目录中(即 url、设置和 wsgi 文件所在的位置)。当我尝试从蜘蛛文件导入函数以运行爬虫进程时,我收到导入错误。这是我使用的语句:

from trydjango18.ticket_city_scraper.ticket_city_scraper.ticket_city_scraper.spiders.tc_spiders import spiderCrawl

这可能看起来很模糊,所以我在下面提供了文件路径的屏幕截图。导入 spider.py 文件的正确方法是什么?

scrapy 蜘蛛的文件路径

包含测试文件的文件路径

更新 我能够让蜘蛛从脚本中运行;但是,我现在从 items 模块的蜘蛛文件中收到另一个导入错误。我认为这很可能是因为只有 spiders.py 的路径被添加到脚本中,而不是其他必要的模块。这些是我使用的语句(以及脚本中的其余代码):

import imp
tc_spider = imp.load_source('tc_spider', '/home/elijah/Desktop/trydjango18/src2/trydjango18/trydjango18/ticket_city_scraper/ticket_city_scraper/spiders/tc_spider.py')  


bandname = raw_input("Enter bandname")
tc_spider.spiderCrawl(bandname)

【问题讨论】:

  • 请注意,使用imp.load_source('tc_spider', '/home/elijah/Desktop/trydjango18/src2/trydjango18/trydjango18/ticket_city_scraper/ticket_city_scraper/spiders/tc_spider.py') 会使您的脚本依赖于环境。
  • @ErnestTen 它将如何变得独立于环境
  • 你不应该在你的项目目录之上使用任何东西。

标签: python django import web-scraping scrapy


【解决方案1】:

我可以看到有 2 个错误:

  1. 你的路径中有额外的ticket_city_scraper

    应该是:

    from trydjango18.ticket_city_scraper.ticket_city_scraper.spiders.tc_spiders import spiderCrawl
    
  2. 没有tc_spiders.py

    添加tc_spiders.py 或从tc_spider.py 导入。

考虑到你问的问题

spider.py 文件

我假设你的意思是tc_spider.py,因此一个完整的解决方案是:

from trydjango18.ticket_city_scraper.ticket_city_scraper.spiders.tc_spider import spiderCrawl

还要确保:

  1. 每个包都包含__init__.py
  2. tc_spiders.py/tc_spider.py 包含模块级函数spiderCrawl

【讨论】:

  • 我刚刚更新了帖子,其中包含我开始工作的陈述和我现在遇到的问题。如果我有一种方法可以导入所有必要的模块,比如导入整个scrapy文件夹,你会吗?当我尝试像使用蜘蛛文件一样添加项目模块的路径时,错误并没有消失。感谢您的回复顺便说一句
  • @loremIpsum1771 你可以import * from a package,但是,我建议你明确地导入每个模块。请记住“显式优于隐式。”。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-04-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多