Scrapy 模块不存在的错误(ModuleNotFoundError: No module named xxx)
实现的案例:
scrapy 图片下载(一):三行代码实现scrapy图片下载
http://www.scrapyd.cn/example/174.html
1. 错误1:没有模块
直接Pycharm中运行爬虫主程序代码,会提示以下错误
line 17, in <module>
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
爬虫项目文件夹结构
错误解决思路:
- 考虑改变导入方式,因为要导入上级文件夹的模块,采用绝对路径的方式
代码改成以下格式,,单独再次运行也没有出现错误了,但是在CMD窗口运行爬虫命令,提示了没有items的模块:2. 因此,代码又改回去了,因为项目文件夹(父文件夹)和spiders(子文件夹)其实里面都有空白的文件__init__.py, 因此直接采用
from 文件夹名称.模块名称 import 类名称
是没有问题的,有些文章里面提到出现上面没有找到items模块,是由于项目文件夹名称和爬虫的名称相同导致的,我的项目文件名称,爬虫主程序py的名称,和主程序中爬虫name都不一样。
最后,只好将导入方式改回。但是运行爬虫命令都是正常的,图片也可以下载下来。只是单独运行主程序会提示没有模块。
参考文章:
文章一:
使用scrapy做爬虫遇到的一些坑:No module named items以及一些解决方案
https://blog.****.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.****.net/bitcarmanlee/article/details/66053727