Scrapy 模块不存在的错误(ModuleNotFoundError: No module named xxx)

实现的案例:
scrapy 图片下载(一):三行代码实现scrapy图片下载
http://www.scrapyd.cn/example/174.html

1. 错误1:没有模块

直接Pycharm中运行爬虫主程序代码,会提示以下错误

line 17, in 
    from ImageSpider.items import ImagespiderItem
ModuleNotFoundError: No module named 'ImageSpider'

Process finished with exit code 1

主程序代码

import scrapy
import sys
sys.path.append('..')
from ImageSpider.items import ImagespiderItem


class ImgspiderSpider(scrapy.Spider):
    name = 'ImgSpider111'
    allowed_domains = ['lab.scrapyd.cn']
    start_urls = ['http://lab.scrapyd.cn/archives/55.html']

    def parse(self, response):
        # 实例化item
        item = ImagespiderItem()
        # 注意imgurls是一个集合也就是多张图片
        imgurls = response.css(".post img::attr(src)").extract()
        item['imgurl'] = imgurls
        yield item

爬虫项目文件夹结构
Scrapy 模块不存在的错误(ModuleNotFoundError: No module named xxx)_第1张图片
错误解决思路:

  1. 考虑改变导入方式,因为要导入上级文件夹的模块,采用绝对路径的方式
    代码改成以下格式,,单独再次运行也没有出现错误了,但是在CMD窗口运行爬虫命令,提示了没有items的模块:
    Scrapy 模块不存在的错误(ModuleNotFoundError: No module named xxx)_第2张图片
    在这里插入图片描述2. 因此,代码又改回去了,因为项目文件夹(父文件夹)和spiders(子文件夹)其实里面都有空白的文件__init__.py, 因此直接采用
    from 文件夹名称.模块名称 import 类名称
    是没有问题的,有些文章里面提到出现上面没有找到items模块,是由于项目文件夹名称和爬虫的名称相同导致的,我的项目文件名称,爬虫主程序py的名称,和主程序中爬虫name都不一样。
    最后,只好将导入方式改回。但是运行爬虫命令都是正常的,图片也可以下载下来。只是单独运行主程序会提示没有模块。

参考文章:

文章一:

使用scrapy做爬虫遇到的一些坑:No module named items以及一些解决方案
https://blog.csdn.net/weixin_41931602/article/details/80209360
1.爬虫名字和项目名字一样,导致导入模块时出错:改爬虫或者项目名称
2.模块不存在:检查你的项目中的items,看看有没有出错
3.模块没有保存:在编辑好items模块时,记得运行编译
4.模块名字和引入的不一样:自行检查
5.手动添加自己创建的scrapy文件夹的路径:例如sys.path.append(r"C:\Users\ME\Desktop\Python project\爬虫\scrapy\novel")。注意路径前“”的r
import sys
sys.path.append(文件路径)

文章二:

Scrapy ImportError: No module named items
https://blog.csdn.net/bitcarmanlee/article/details/66053727

你可能感兴趣的:(网络爬虫)