在 Scrapy 中导入项目时的相对错误

Relative error while importing items in Scrapy

我正在学习 Python 以及如何使用 Scrapy。 我一直在抓取“http://quotes.toscrape.com/”并且一切正常,直到我尝试使用项目组织数据。 似乎错误是

from ..items import QuotetutorialItem

ImportError: attempted relative import with no known parent package"

我无法找到导入项目的正确方法,因此非常感谢您的帮助!

这是我的蜘蛛代码:

import scrapy
from ..items import QuotetutorialItem

class QuoteSpider(scrapy.Spider):
    name = "quotes"                                                    
    start_urls = ["http://quotes.toscrape.com/"]

    def parse(self, response):

         items = QuotetutorialItem()                                  
         all_div_quotes = response.css("div.quote")                   

         for quotes in all_div_quotes:                                

            title = quotes.css("span.text::text").extract()
            author = quotes.css(".author::text").extract()
            tag = quotes.css(".tag::text").extract()

            items["title"] = title
            items["author"] = author
            items["tag"] = tag

            yield items

items.py的代码:

import scrapy


class QuotetutorialItem(scrapy.Item):
    # define the fields for your item here like:
    title = scrapy.Field()
    author = scrapy.Field()
    tag = scrapy.Field()

这里是结构:

为什么我通常建议将您的项目路径附加到 PYTHONPATH

export PYTHONPATH="${PYTHONPATH}:/path/to/quotetutorial/"

并在您的 quotes_spider.py 中使用:

from quotetutorial.items import QuotetutorialItem

现在如果你想从 quotes_spider.py 导入包到 items.py,下面应该可以解决问题:

from quotetutorial.spiders.quotes_spider import QuotetutorialItem

或者,以下方法也有效:

export PYTHONPATH="${PYTHONPATH}:/path/to/quotetutorial/quotetutorial/"

然后:

from items import QuotetutorialItem

from spiders.quotes_spider import QuotetutorialItem