前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >scrapy实战之爬取表情包

scrapy实战之爬取表情包

作者头像
不断折腾
发布2019-09-23 10:21:02
6970
发布2019-09-23 10:21:02
举报
文章被收录于专栏:折腾折腾再折腾

前言:在之前我们学习了scrapy框架的基本使用, 今天我们通过实战(爬取http://www.doutula.com的套图)来更加了解scrapy框架额使用,仅以此来告别我们的爬虫入门,后续会有一些反爬,验证码识别,数据分析的文章。下次我们就从基础开始学习python,中间也有可能会穿插一些有趣的东西。来帮助我们学习python。

一、爬取表情包思路(http://www.doutula.com)

1、打开网站,点击最新套图

2、之后我们可以看到没有套图,我们需要提取每个套图的连接

3、获取连接之后,进入页面提取图片就好了

4、我们可以发现该网站还穿插有广告,我们需要过滤点广告

二、实战

关于新建项目我们就不再多说了。不知道的可以看看以前文章。。。

1、首先我们提取第一页的url

通过上图我们可以发现我们想要的url全在class名为col-sm-9的div下,

红色框的部分为广告。不是a标签,所以我们就不用过滤了。我们直接选取col-sm-9下的直接子节点即可

写下如下代码:

值得注意的是在settings.py中需要添加头信息和将robots.txt协议修改为False

我们打上断点调试一下:

我们发现我们想要的信息已经提取出来了。

注意:在Request中的mate参数,是用来传递参数的,传递给下一个方法使用。使用方法和字典相似。

2、完善item

我们只需要三个字段,什么系列,图片url,图片名称。

3、提取item中我们需要的字段

4、下一页

5、保存

因为对scrapy保存图片没有研究,所以就自己写保存图片的方法。

在pipelines.py种添加如下代码:

并且在settings.py中添加:

6、运行

直接报错,因为有反扒机制,所以我们在settings.py添加头信息

运行一段时候后又报错了,看来需要随机更换表头信息。

这里我们使用第三方库很方便,pip3 install fake_useragent

安装成功后我们在middlewares.py中导入:from fake_useragent import UserAgent

添加如下代码:

在settings.py文件中添加

即可

运行main文件:

即可。

小结:

效果图:

问题:

在运行过程中遇到了四个问题:

1、没有获取大到图片连接:

可能这个网站有两个版本获取的css方式不一样。

解决方法:可以使用xpath中的|(或)来解决

2、没有获取到图片名称

解决方法:同上

3、图片名称相同

解决方法:可以使用md5加密后添加,你也可以使用你自己的方法

4、在图片名中含有?/\等非法字符

解决方法:可以通过正则过滤,如果md5加密,那么一下解决两个问题。

虽然有些图片没有获取到,但是还是爬取了很多。

有兴趣的可以尝试去修改。

后台回复表情包获取源代码和表情包。

完。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-08-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 python入门到放弃 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
验证码
腾讯云新一代行为验证码(Captcha),基于十道安全栅栏, 为网页、App、小程序开发者打造立体、全面的人机验证。最大程度保护注册登录、活动秒杀、点赞发帖、数据保护等各大场景下业务安全的同时,提供更精细化的用户体验。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档