首页 > 解决方案 > 尝试从脚本运行scrapy时出现“ImportError”

问题描述

我正在编写一个爬虫来抓取hackernews 网站以获取标题和发布者文本并将它们存储在一个.csv 文件中。我希望能够从脚本本身而不是从shell 运行它,因为我是使用CrawlerProcess所以我可以从脚本运行它,当我使用from scrapy.crawler import CrawlerProcess VScode时没有显示任何错误,我使用

if __name__ == "__main__":
  process = CrawlerProcess()
  process.crawl(Hackernews_crawler)
  process.start()

在脚本的末尾(我在 medium 上找到它)vscode 也没有显示任何错误,但是当我运行脚本时它给了我

  File "/home/amirmhd/Desktop/crawler/web_crawler_bot/web_crawler_bot/spiders/hacker_news_crawler.py", line 3, in <module>
    from ..items import Hackernews_items
ImportError: attempted relative import with no known parent package

我无法弄清楚为什么将它作为脚本运行会给我这个错误但是当我在 shell 中运行它时scrapy crawl hackernews它工作正常! 这是我的代码

我不知道导入项目有什么问题,它作为脚本运行时出错,但它不在 shell 中,这是我的 webcrawler 目录树。我不明白错误究竟来自哪里,是因为CrawlerProcess还是因为from ..items import Hackernews_items

我使用 venv 并且我安装了scrapy pip3 install scrapy,操作系统 ubuntu 20.04 LTS

提前感谢您的时间

标签: python-3.xscrapy

解决方案


推荐阅读