2

我正在学习 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()

这里的结构:

在此处输入图像描述

4

1 回答 1

1

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

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

并在您的quotes_spider.py使用范围内:

from quotetutorial.items import QuotetutorialItem

现在,如果您想items.py从 say中导入包quotes_spider.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
于 2020-03-13T13:28:21.123 回答