ValueError:尝试相对导入超出顶级包(Scrapy)

时间:2019-06-20 12:25:51

标签: python scrapy web-crawler valueerror

我一直试图编写一个Python文件来抓取网站页面的全部内容。现在,在我运行代码之前,一切似乎都很好。

我已经确保从项目python文件链接这些项目。我应该不会收到任何错误,但仍然会收到“ ValueError:尝试相对顶级包进行相对导入”

这是我的主要python文件中的代码:

import scrapy
from ..items import AnalogicScrapeItem


class AnalogicSpider(scrapy.Spider):
    name = 'analogic'
    start_urls = ['https://www.analogic.com/about/']

    def parse(self, response):
        items = AnalogicScrapeItem()
        body1 = response.css('body').css('::text').extract()

        items['body1'] = body1

        yield items

这是我来自items.py文件的代码:

import scrapy


class AnalogicScrapeItem(scrapy.Item):
    # define the fields for your item here like:
    # name = scrapy.Field()
    body1 = scrapy.Field()

运行代码后,这是我得到的错误:

Traceback (most recent call last):
  File "C:/Users/Kev/PycharmProjects/whole_page_extract3/analogic_scrape/
        analogic_scrape/spiders/analogic.py", line 3, in <module> 
        from ..items import AnalogicScrapeItem
        ValueError: attempted relative import beyond top-level package

对于解决此问题的任何帮助,将非常感谢,谢谢!

1 个答案:

答案 0 :(得分:0)

from analogic_scrape.items import AnalogicScrapeItem

会做这份工作。使用..时,是从相对路径导入文件。

但是,如果您使用scrapy crawl analogic从命令行运行脚本,则相对导入不是问题。