第一部分、利用ImagesPipeline爬取pixabay里面的美女图

进入pixabay网站在搜索框中输入关键字beauty,并且简化一下URL中的参数:

尝试进行翻页,可见URL中只有一个参数pagi发生变化:

随便进入一个页面打开F12,刷新,在原始的请求中有相关进入到详情页面的链接:

进入到详情页面,同样F12,刷新,在原始请求中也能找到我们最后想要的图片下载链接(注意:此处并非下载的是最最高清的图片,我尝试进行注册以获取最高清图片下载链接,但是注册失败,有兴趣的可以再试试):

网页结构比较简单,本来觉得可以很快就爬完,没想到这才刚开始我的404之旅:

pixabay.py:import scrapy
from scrapy.http.request import Request
from pixabayweb.items import PixabaywebItemclass PixabaySpider(scrapy.Spider):name = 'pixabay'start_urls=['https://pixabay.com/zh/photos/?q=beauty&pagi={}'.format(i)for i in range(1,414)]def parse(self, response):base_url='https://pixabay.com'links=response.xpath('//div[@class="flex_grid credits"]/div[@class="item"]')for link in links:url=base_url+link.xpath('./a/@href').extract_first()yield Request(url=url,callback=self.parse_detail)def parse_detail(self,response):item=PixabaywebItem()item['image_urls']=response.xpath('//*[@id="media_container"]/img/@src').extract_first()yield item
settings.pyBOT_NAME = 'pixabayweb'SPIDER_MODULES = ['pixabayweb.spiders']
NEWSPIDER_MODULE = 'pixabayweb.spiders'ROBOTSTXT_OBEY = False
DOWNLOAD_DELAY=0.8
COOKIES_ENABLED = FalseDEFAULT_REQUEST_HEADERS = {'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8','Accept-Encoding':'gzip, deflate, sdch, br','Accept-Language':'zh-CN,zh;q=0.8','User-Agent':'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.11 (KHTML like Gecko) Chrome/23.0.1271.95 Safari/537.11','Host':'pixabay.com','Connection':'keep-alive','Upgrade-Insecure-Requests':'1','Cookie':'is_human=1; csrftoken=9pFSFS4w495FfCFC33KecCXC2TLvevvprCs2g3ALaZTQYReQGJ1f8WStRcfndDPU; sessionid="eyJfbGFuZ3VhZ2UiOiJ6aCJ9:1dvDvQ:_DMlwOr3XOGC3i19M_U4BNEvK7U"; img_pp=100; _ga=GA1.2.2001502836.1505890547; _gid=GA1.2.1360455098.1505994393; client_width=1349',
}ITEM_PIPELINES = {# 'pixabayweb.pipelines.PixabaywebPipeline': 300,'pixabayweb.pipelines.MyImagePipeline':1
}
IMAGES_STORE='E:\python\Pycharm\pixabayweb'IMAGES_EXPIRES=90IMAGES_THUMBS={'small':(50,50),'big':(200,200),
}
pipelines.pyfrom scrapy.pipelines.images import ImagesPipelineheaders={'User-Agent':'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36',
}
class MyImagePipeline(ImagesPipeline):def get_media_requests(self,item,info):yield scrapy.Request(url=item['image_urls'],headers=headers)def item_completed(self,results,item,info):image_paths=[x['path'] for ok,x in results if ok]if not image_paths:raise DropItem('Item contains no images')return item

一开始出现报错ImportError:cannot import name ‘_win32stadio’.
翻了好多谷歌,最后通过这个解决:

后面开始出现各种404错误,没有图片下载下来,每一条抓取的结果都是显示为Item contains no images

搞了一天,实在没有找到原因,我一度怀疑是不是网站的原因,后面在网上提问,感谢简书的kaikai老哥抽时间找出了我代码中存在的问题。
但是404问题还是没有解决,我觉得是不是网站的问题,所以就换另外一个,爬一爬煎蛋网的妹子图…

第二部分、利用ImagesPipeline爬取煎蛋网里面的妹子图

进入到妹子图,网站结构也比较简单,利用URL中的page参数进行翻页,在原始的请求中可以拿到图片的链接:

于是我开始再次造轮子了:

jiandan.py:import scrapy
from meizitu.items import MeizituItemclass JiandanSpider(scrapy.Spider):name = 'jiandan'start_urls = ['http://jandan.net/ooxx/page-{}'.format(i) for i in range(1,146)]def parse(self, response):item=MeizituItem()image_urls=response.css('.commentlist li .row .text p img::attr(src)').extract()item['image_urls']=[('http:'+i)for i in image_urls]yield item
settings.py:BOT_NAME = 'meizitu'SPIDER_MODULES = ['meizitu.spiders']
NEWSPIDER_MODULE = 'meizitu.spiders'ROBOTSTXT_OBEY = False
DOWNLOAD_DELAY = 3
COOKIES_ENABLED = FalseDEFAULT_REQUEST_HEADERS = {'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8','Accept-Encoding':'gzip, deflate, sdch','Accept-Language':'zh-CN,zh;q=0.8','Connection':'keep-alive','Cookie':'__cfduid=d0f8f8aef303ad3b55cd071a426e7a59c1504854664; _ga=GA1.2.986719823.1501079288; _gid=GA1.2.1585289570.1506061387','Host':'jandan.net','Upgrade-Insecure-Requests':'1','User-Agent':'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'
}
ITEM_PIPELINES = {'meizitu.pipelines.MyImagePipeline': 1,
}
IMAGES_STORE='E:\\Python\pycharm\meizitu\jiandanmeizi'
IMAGES_EXPIRES=90
IMAGES_THUMBS={ 'small':(50,50),'big':(200,200)
}
pipelines.py:import scrapy
from scrapy.exceptions import DropItem
from scrapy.pipelines.images import ImagesPipelineclass MyImagePipeline(ImagesPipeline):def get_media_requests(self, item, info):for image_url in item['image_urls']:yield scrapy.Request(image_url)def item_completed(self, results, item, info):image_paths = [x['path'] for ok,x in results if ok]if not image_paths:raise DropItem('Item contains no images')return item

运行的结果是这样的:同样也是报404,没能把图片下载下来。

后面发现两个的报错好像是差不多的,觉得应该是犯了同样的错误,Google、知乎好像也没能找到相关的,最后看了代码尝试进行修改确实有点问题,但是还是不太明天具体原因,等有点思绪了再写一写。

pixabay:

煎蛋:

第三部分

最后想说一说在处理报错上:ValueError:Missing scheme in request url: h 刚开始自己处理这个的方式有点粗暴直接就是加个[ ],也没有多想,后面经过考虑以后才写成写成上面代码中的这样:

image_urls=response.css('.commentlist li .row .text p img::attr(src)').extract()item['image_urls']=[('http:'+i)for i in image_urls]yield item

pixabay:

煎蛋:

Python爬虫入门-小试ImagesPipeline爬取pixabay和煎蛋之为什么是‘404’相关推荐

  1. Python爬虫入门 | 7 分类爬取豆瓣电影,解决动态加载问题

      比如我们今天的案例,豆瓣电影分类页面.根本没有什么翻页,需要点击"加载更多"新的电影信息,前面的黑科技瞬间被秒--   又比如知乎关注的人列表页面:   我复制了其中两个人昵称 ...

  2. Python爬虫入门——2. 2爬取酷狗音乐top1-500歌曲信息

    有了第一个程序的基础,我们现在来爬取酷狗音乐top500的歌曲信息.连接http://www.kugou.com/yy/rank/home/1-8888.html 我们第一个程序只爬取了一个页面的数据 ...

  3. python爬虫教程网-python爬虫入门10分钟爬取一个网站

    一.基础入门 1.1什么是爬虫 爬虫(spider,又网络爬虫),是指向网站/网络发起请求,获取资源后分析并提取有用数据的程序. 从技术层面来说就是 通过程序模拟浏览器请求站点的行为,把站点返回的HT ...

  4. python爬虫入门教程:爬取网页图片

    在现在这个信息爆炸的时代,要想高效的获取数据,爬虫是非常好用的.而用python做爬虫也十分简单方便,下面通过一个简单的小爬虫程序来看一看写爬虫的基本过程: 准备工作 语言:python IDE:py ...

  5. python爬虫入门实战!爬取博客文章标题和链接!

    最近有小伙伴和我留言想学python爬虫,那么就搞起来吧. 准备阶段 爬虫有什么用呢?举个最简单的小例子,你需要<战狼2>的所有豆瓣影评.最先想的做法可能是打开浏览器,进入该网站,找到评论 ...

  6. Python爬虫入门教程:爬取妹子图网站 - 独行大佬

    妹子图网站---- 安装requests打开终端:使用命令pip3 install requests等待安装完毕即可使用接下来在终端中键入如下命令?123# mkdir demo # cd demo# ...

  7. 给小白的python爬虫入门之批量爬取别样网的视频素材

    网络爬虫,听起来很神秘,其实也不过如此,简单来说,只要网站开放了端口即用户能访问这个网站,那么无论这个网站的反爬机制做的有多么好,只要你的技术够,总会有机会破解它. 换句话说,不是你的网站很安全,而是 ...

  8. 小白Python爬虫入门实例1——爬取中国最好大学排名

    中国大学慕课python网络爬虫与信息提取--定向爬虫"中国最好大学排名信息爬取" 由于课程中老师给的案例有些许瑕疵,加之至今该网页的首页已经更新,原网址已不存在,因此笔者在老师给 ...

  9. Python爬虫入门-利用scrapy爬取淘女郎照片

    最近看到有个相对来说比较简单的可以爬取淘女郎的链接地址,它主要可以通过改变URL中page参数来实现翻页. 我们这个这个链接进入到一个淘女郎的页面,进入相册页面,里面有很多相册,我们打开其中一个,可以 ...

最新文章

  1. php path当局者迷,当局者迷_成语故事_有品有墨_品故事 写人生
  2. 欢迎来到美多商城!-项目准备之项目介绍-项目需求分析-项目架构设计
  3. 留言本的漏洞挖掘总结
  4. php instanceof 基类,PHP强制对象类型之instanceof操作符
  5. java arraylist 初始化_一不小心就让Java开发踩坑的fail-fast是个什么鬼?
  6. 自由软件基金会称DRM被用于锁定、控制和监视用户
  7. C++ list类的模拟实现
  8. false true求或_如何依据【关键字】求【数量和】
  9. 下列统计量服从什么分布_第六章 数理统计基本概念
  10. PHP工具篇:PHPStorm IDE使用CodeSniffer代码规范化管理
  11. UserWarning: Error checking compiler version for cl
  12. PeakDo毫米波无线投屏器,你的无线图传神器
  13. ntfs格式的移动硬盘如何在mac电脑写入?
  14. 深蓝-视觉slam-第七节习题
  15. python名片打印程序_Python的格式化输出--制作名片
  16. dom4j解析xml格式字符串获取标签属性和内容
  17. python画多边形(八边形)
  18. 根据WOS获取某篇SCI论文被引用次数[Web of Science 统计]
  19. markdown支持的脑图工具
  20. 脱离标准流(1)浮动

热门文章

  1. jenkins连接外部k8s集群
  2. android接入即时IM(接入亲加通信云)
  3. windows11右下角小地球,可以正常上网,但显示无法访问internet
  4. Oracle 数据库创建数据库和表
  5. [读书笔记] 图解HTTP
  6. 织梦全自动php采集插件下载,织梦dedecms自动采集伪原创处理插件-织梦插件
  7. HTML用五角星打分,jQuery鼠标滑过五角星打分星级评分代码
  8. 《从菜鸟到大师-杨老师课程笔记》Python工程师之 01
  9. 1067 – Invalid default value for ‘id’
  10. 计算机网络 自顶向下(5)链路层——学习笔记