【1.项目背景】你在寻找可以与高手匹敌的应用吗?您是否正在寻找可以制作自己的表情符号的应用程序?您是否正在寻找最全最搞笑的表情库?斗图网汇集了数万个表情包,在这里你可以快速找到你想要的表情包,更好的“斗图”,助你成为真正的斗图终结者!【二、项目目标】下载表情包并保存文件。[3.涉及的库和网站]1、网址如下:https://www.doutula.com/photo/list/?page={}2、涉及的库:requests、lxml、ssl、time3,软件:PyCharm[4.项目分析】1.如何找到表情包图片的地址?F12右键查看,找到对应图片的地址。观察url的变化(一般取前三页):https://www.doutula.com/photo/list/?page=1https://www.doutula.com/photo/list/?page=2https://www.doutula.com/photo/list/?page=3发现点击下一页时,page{}每增加一页就会加1,将转换后的变量替换成{},然后使用for循环遍历URL实现多URL请求。2.如何去掉ssl验证?因为这个网址是https,所以需要导入一个ssl模块,忽略ssl验证。3.如何获取cookies?右键查看,找到NetWork,随便复制一个cookie。[V.项目实现】1、我们定义一个类class继承object,然后定义init方法继承self,再定义一个main函数main继承self。导入所需的库。importrequestsfromlxmlimportetreefromfake_useragentimportUserAgentimportssl#ssl验证importtimessl._create_default_https_context=ssl._create_unverified_contextclassEmoticon(object):def__init__(self):passdefmain(self):passif__name__:=='__pis_main__')spider.main()2.导入url,构造请求头,防止反爬。def__init__(self):self.headers={'User-Agent':'Mozilla/5.0'}self.url='https://www.doutula.com/photo/list/?page={}'3、发送请求,得到响应,回调页面,方便下一次请求。defget_page(self,url):res=requests.get(url=url,headers=self.headers)html=res.content.decode("utf-8")返回html4,xpath解析页面。这里我们先获取父节点,然后通过for循环遍历找到对应的子节点(图片地址)。image=parse_html.xpath('//ul[@class="list-group"]/li/div/div//a')foriinimage:image_src_list=i.xpath('.//img/@data-original')[0]image_name=i.xpath('.//img//@alt')[0]运行结果:5、请求图片地址,图片地址后10位对应的图片地址作为图片的命名写入文件(每张图片的后缀不同,所以这里不使用image_name作为图片的命名)。html2=requests.get(url=image_src_list,headers=self.headers).contentname="/image/"+image_src_list[-20:]#print(name[-10:])withopen(name[-10:],'wb')asf:f.write(html2)print("%s【下载成功!!!】"%image_name)print("====================================")6.调用方法实现功能。html=self.get_page(url)self.parse_page(html)print("==========================页面%s抓取成功!!!========================="%page)7.时间模块显示执行时间。start=time.time()end=time.time()print('执行时间:%.2f'%(end-start))[6.效果展示】1、点击绿色小三角运行,进入开始页面终止页面。2.在控制台显示下载成功信息。3.保存文档,就可以在本地看到地图了。[7.总结】1、不建议抓取太多数据,容易造成服务器负载,稍微尝试一下。2、本文基于Python网络爬虫,利用爬虫库获取表情并存储在文档中。3、希望通过这个项目,让我了解到,对于HTTPS网站,我对如何去除ssl验证有一个大概的了解。4、可以尝试爬取其他分类表情,按步骤实现即可。实现的时候总会遇到各种各样的问题。5、需要本文源码的朋友可以在后台回复“斗图达人”获取。了解更多Python爬虫和数据挖掘专业网站:http://pdcfighting.com/了解更多Python网络爬虫和数据挖掘专业网站:http://pdcfighting.com/
