python3问题-scrapy ModuleNotFoundError: No module named 'scrapy.contrib'

ModuleNotFoundError: No module named ‘scrapy.contrib’,scrapy.pipeline’

这个屌问题,真的是感觉没一个是说到点的啊。

就是字面的意思,没有这个包而已。

而且还真的是没有。比如下面这2个

# from scrapy.contrib.pipeline.images import ImagesPipeline
# from scrapy.pipeline.images import ImagesPipeline
正确的写法: from scrapy.pipelines.images import ImagesPipeline

可以看图,如果想要自定义ImagesPipeline,引入这个包就好
在这里插入图片描述
ITEM_PIPELINES = {
# ‘tupian.pipelines.ImagePipeline’: 300,
‘scrapy.pipelines.images.ImagesPipeline’: 300

‘scrapy.contrib.pipeline.images.ImagesPipeline’:300

}

自定义ImagesPipeline

ModuleNotFoundError: No module named ‘scrapy.contrib’
ModuleNotFoundError: No module named ‘scrapy.pipeline’

我初学scrapy爬虫,在github上下载了一个工程用pycharm运行了一下是没有问题的,然后在cmd中通过scrapy crawl xiaohuar 的命令运行爬虫的时候出现了 no module named xiaohuar.spiders 的报错 代码如下: #coding=utf-8 import scrapy import re import os import urllib from scrapy.selector import Selector from scrapy.http import HtmlResponse, Request class Xiaohuar_spider(scrapy.spiders.Spider): name = "xiaohuar" allowed_domains = ["xiaohuar.com"] # 搜索的域名范围,也就是爬虫的约束区域,规定爬虫只爬取这个域名下的网页 start_urls = ["http://www.xiaohuar.com/list-1-1.html"] # 该函数名不能改变,因为Scrapy源码中默认callback函数的函数名就是parse def parse(self, response): current_url = response.url # 爬取时请求的url body = response.body # 返回的html unicode_body = response.body_as_unicode() # 返回的html unicode hxs = Selector(response) # 创建查询对象,HtmlXPathSelector已过时 if re.match('http://www.xiaohuar.com/list-1-\d+.html', response.url): # 如果url能够匹配到需要爬取的url,就爬取 items = hxs.xpath('//div[@class="item_list infinite_scroll"]/div') # 匹配到大的div下的所有小div(每个小div中包含一个图片) for i in range(len(items)): # 遍历div个数 src = hxs.xpath( '//div[@class="item_list infinite_scroll"]/div[%d]//div[@class="img"]/a/img/@src' % i).extract() # 查询所有img标签的src属性,即获取校花图片地址 name = hxs.xpath( '//div[@class="item_list infinite_scroll"]/div[%d]//div[@class="img"]/span/text()' % i).extract() # 获取span的文本内容,即校花姓名 school = hxs.xpath( '//div[@class="item_list infinite_scroll"]/div[%d]//div[@class="img"]/div[@class="btns"]/a/text()' % i).extract() # 校花学校 if src: absoluteSrc = "http://www.xiaohuar.com" + src[ 0] # 拼接实际路径,因为.extract()会返回一个list,但是我们是依次取得div,所以是取第0个 file_name = "%s_%s.jpg" % (school[0], name[0]) # 拼接文件名,学校_姓名 file_path = os.path.join("E:\file", file_name) # 拼接这个图片的路径下 urllib.urlretrieve(absoluteSrc, file_path) # 接收文件路径和需要保存的路径,会自动去文件路径下载并保存到我们指定的本地路径 all_urls = hxs.xpath('//a/@href').extract() # 提取界面所有的url for url in all_urls: # 遍历获得的url,如果满足条件,继续爬取 if url.startswith('http://www.xiaohuar.com/list-1-'): yield Request(url, callback=self.parse) ![图片说明](https://img-ask.csdn.net/upload/201705/06/1494051852_23735.png) 整个工程的文件就是这样 请问各位大神这个问题出在哪里,怎么解决呢?
©️2020 CSDN 皮肤主题: 像素格子 设计师:CSDN官方博客 返回首页