Python爬虫入门-小试ImagesPipeline爬取pixabay和煎蛋之为什么是‘404’
第一部分、利用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’相关推荐
- Python爬虫入门 | 7 分类爬取豆瓣电影,解决动态加载问题
比如我们今天的案例,豆瓣电影分类页面.根本没有什么翻页,需要点击"加载更多"新的电影信息,前面的黑科技瞬间被秒-- 又比如知乎关注的人列表页面: 我复制了其中两个人昵称 ...
- Python爬虫入门——2. 2爬取酷狗音乐top1-500歌曲信息
有了第一个程序的基础,我们现在来爬取酷狗音乐top500的歌曲信息.连接http://www.kugou.com/yy/rank/home/1-8888.html 我们第一个程序只爬取了一个页面的数据 ...
- python爬虫教程网-python爬虫入门10分钟爬取一个网站
一.基础入门 1.1什么是爬虫 爬虫(spider,又网络爬虫),是指向网站/网络发起请求,获取资源后分析并提取有用数据的程序. 从技术层面来说就是 通过程序模拟浏览器请求站点的行为,把站点返回的HT ...
- python爬虫入门教程:爬取网页图片
在现在这个信息爆炸的时代,要想高效的获取数据,爬虫是非常好用的.而用python做爬虫也十分简单方便,下面通过一个简单的小爬虫程序来看一看写爬虫的基本过程: 准备工作 语言:python IDE:py ...
- python爬虫入门实战!爬取博客文章标题和链接!
最近有小伙伴和我留言想学python爬虫,那么就搞起来吧. 准备阶段 爬虫有什么用呢?举个最简单的小例子,你需要<战狼2>的所有豆瓣影评.最先想的做法可能是打开浏览器,进入该网站,找到评论 ...
- Python爬虫入门教程:爬取妹子图网站 - 独行大佬
妹子图网站---- 安装requests打开终端:使用命令pip3 install requests等待安装完毕即可使用接下来在终端中键入如下命令?123# mkdir demo # cd demo# ...
- 给小白的python爬虫入门之批量爬取别样网的视频素材
网络爬虫,听起来很神秘,其实也不过如此,简单来说,只要网站开放了端口即用户能访问这个网站,那么无论这个网站的反爬机制做的有多么好,只要你的技术够,总会有机会破解它. 换句话说,不是你的网站很安全,而是 ...
- 小白Python爬虫入门实例1——爬取中国最好大学排名
中国大学慕课python网络爬虫与信息提取--定向爬虫"中国最好大学排名信息爬取" 由于课程中老师给的案例有些许瑕疵,加之至今该网页的首页已经更新,原网址已不存在,因此笔者在老师给 ...
- Python爬虫入门-利用scrapy爬取淘女郎照片
最近看到有个相对来说比较简单的可以爬取淘女郎的链接地址,它主要可以通过改变URL中page参数来实现翻页. 我们这个这个链接进入到一个淘女郎的页面,进入相册页面,里面有很多相册,我们打开其中一个,可以 ...
最新文章
- php path当局者迷,当局者迷_成语故事_有品有墨_品故事 写人生
- 欢迎来到美多商城!-项目准备之项目介绍-项目需求分析-项目架构设计
- 留言本的漏洞挖掘总结
- php instanceof 基类,PHP强制对象类型之instanceof操作符
- java arraylist 初始化_一不小心就让Java开发踩坑的fail-fast是个什么鬼?
- 自由软件基金会称DRM被用于锁定、控制和监视用户
- C++ list类的模拟实现
- false true求或_如何依据【关键字】求【数量和】
- 下列统计量服从什么分布_第六章 数理统计基本概念
- PHP工具篇:PHPStorm IDE使用CodeSniffer代码规范化管理
- UserWarning: Error checking compiler version for cl
- PeakDo毫米波无线投屏器,你的无线图传神器
- ntfs格式的移动硬盘如何在mac电脑写入?
- 深蓝-视觉slam-第七节习题
- python名片打印程序_Python的格式化输出--制作名片
- dom4j解析xml格式字符串获取标签属性和内容
- python画多边形(八边形)
- 根据WOS获取某篇SCI论文被引用次数[Web of Science 统计]
- markdown支持的脑图工具
- 脱离标准流(1)浮动
热门文章
- jenkins连接外部k8s集群
- android接入即时IM(接入亲加通信云)
- windows11右下角小地球,可以正常上网,但显示无法访问internet
- Oracle 数据库创建数据库和表
- [读书笔记] 图解HTTP
- 织梦全自动php采集插件下载,织梦dedecms自动采集伪原创处理插件-织梦插件
- HTML用五角星打分,jQuery鼠标滑过五角星打分星级评分代码
- 《从菜鸟到大师-杨老师课程笔记》Python工程师之 01
- 1067 – Invalid default value for ‘id’
- 计算机网络 自顶向下(5)链路层——学习笔记