首页 > 解决方案 > 在 Python 中的 Scrapy 中导入模块时出错

问题描述

我正在尝试在scrapy中实现蜘蛛,当我运行蜘蛛并尝试了几件事但无法解决时出现错误。错误如下,

runspider: error: Unable to load 'articleSpider.py': No module named 'wikiSpider.wikiSpider'

我还在学习 python 以及 scrapy package 。但我认为这与从不同目录导入模块有关,所以我在 pycharm 中创建的虚拟环境中包含了我的目录树,如下图所示。

在此处输入图像描述

另请注意,我正在使用它作为我的虚拟环境的解释器的 python 3.9。

我使用蜘蛛的代码如下,

from scrapy.linkextractors import LinkExtractor
from scrapy.spiders import CrawlSpider, Rule
from wikiSpider.wikiSpider.items import Article


class ArticleSpider(CrawlSpider):

   name = 'articleItems'
   allowed_domains = ['wikipedia.org']
   start_urls = ['https://en.wikipedia.org/wiki/Benevolent'
              '_dictator_for_life']
   rules = [Rule(LinkExtractor(allow='(/wiki/)((?!:).)*$'),
         callback='parse_items', follow=True)]

   def parse_items(self, response):
      article = Article()
      article['url'] = response.url
      article['title'] = response.css('h1::text').extract_first()
      article['text'] = response.xpath('//div[@id='
                                     '"mw-content-text"]//text()').extract()

      lastUpdated = response.css('li#footer-info-lastmod::text').extract_first()
      article['lastUpdated'] = lastUpdated.replace('This page was last edited on ', '')
      return article

这是文件中生成错误的代码,

import scrapy


class Article(scrapy.Item):
   url = scrapy.Field()
   title = scrapy.Field()
   text = scrapy.Field()
   lastUpdated = scrapy.Field()

标签: python-3.xscrapy

解决方案


从“ wikiSpider ”.wikiSpider.items 导入文章

更改此文件夹名称。然后编辑: from wikiSpider.items import Article

解决了。


推荐阅读