听说你在网上斗图斗输了?听说你连斗图用的弔图也不知道去哪找?
没事啦,你看到这篇文章就证明你找到救星啦!在本篇文章里我会带着大家一起来爬取一下表情包网,从此让你的图库再也不缺弔图,妈妈再也不担心我斗图找不到图啦!那废话不多说 直接上解析。

首先我们要知道如果我们要爬取一个网站,我们要先分析这个网站,了解你的需求是什么。我这边大致也把需求分为了以下几大点:1、网站分析 2、对要爬取的图片分析 3、单页爬虫代码的编写 4、翻页爬取的处理。那我们首先从第一点网站分析来说。

  1. 网站分析
    待爬取url:http://www.bbsnet.com/biaoqingbao/page/1

我们先来分析一下这个网站我们要爬取的东西是静态的还是动态的。通过下图我们可以看到我们要找的东西是在网页源代码里面可以找到的,那证明这个网站是属于静态加载的网站了。我们不需要通过寻找数据接口去爬取,直接使用普通的爬虫代码进行爬取就可以了。

2. 爬取图片分析
由于上文已经说了,我们爬取的网站是属于静态的网站,所以我们需要寻找的相对应的数据也都是在网页源代码中。如下图所示,我们直接通过检查可以很清楚的看到我们要的数据就是img标签里面的src属性,所以我们这里直接提取这个标签的属性就可以得到图片的链接了。
3、上述分析结束了那我们也就可以开始先写爬取一页表情包的代码了,代码如下:

'''
提示:
本次爬取使用到的库有requests,lxml
安装方法:win+R pip install xxx(需要安装的库)
'''
import requests
from lxml import etreeclass BqbSpider(object):def __init__(self):self.header = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36'}self.name = 1def get(self, url):res = requests.get(url, headers=self.header)html = res.content.decode('utf-8')return htmldef parse_picture(self, html):tree = etree.HTML(html)li_lst = tree.xpath('//ul[@id="post_container"]/li')img_lst = []for li in li_lst:img_url = li.xpath('./div/a/img/@src')for img in img_url:img_lst.append(img)return img_lstdef save(self, img_lst):for img in img_lst:response = requests.get(img)filename = './img/表情{}.png'.format(self.name)print('正在爬取第{}张表情包'.format(self.name))with open(filename, 'wb') as f:f.write(response.content)self.name += 1def main(self):url = 'http://www.bbsnet.com/biaoqingbao'html = self.get(url)img_lst = self.parse_picture(html)self.save(img_lst)if __name__ == '__main__':b = BqbSpider()b.main()

看完了单页爬取后是不是觉得自己的弔图瞬间比以前多了那么几张呢?什么?你说不够多?那没关系啊,我们再接着来说说翻页爬取,让你从此以后再也不缺图~

4、翻页爬取处理
要做翻页处理,最直观的方法就是直接观察不同页的url变化了,通过点击网页最底部的下一页按钮我们可以观察到(下面的代码框里)

第二页:http://www.bbsnet.com/biaoqingbao/page/2
第三页:http://www.bbsnet.com/biaoqingbao/page/3

根据上面的两个url规律我们可以知道如果说是翻页操作的话变化的地方只有page/(数字)后面这个数字,并且是以+1的形式去加的,所以我们就可以推断出第一页的url是:

第一页:http://www.bbsnet.com/biaoqingbao/page/1

那么知道了第一页的url后我们相对应的也就可以把我们上面单页爬取的起始url改写成如下的写法

url = 'http://www.bbsnet.com/biaoqingbao/page/{}'.format()

通过点击尾页我们可以观察到这个网站的表情包一共是有13页,所以这里我们就可以写个遍历以此来实现翻页功能


我们再把改写的url和这个遍历结合一下,就可以得到一个完整的翻页url(如下)

for i in range(1, 14):url = 'http://www.bbsnet.com/biaoqingbao/page/{}'.format(i)

说到这里了,有个问题我需要跟大家提醒一下,就是有可能你的爬虫文件在运行途中会突然报错。在爬取到第101个图片文件的时候会报这么个错误,当时我也很纳闷什么问题=。=,直到后来我去网页里面看了一眼,才知道原来是这张图片它里面本来就是没东西的(就是图2里面的那个斗图神器)
1、

2、

我们点开这个斗图神器也是可以看到他里面是没东西的,所以我们这里就需要一个判断来跳过他以此保证爬虫文件能够正常的运行(代码如下)

        for img in img_lst:if img == 'https://ws4.sinaimg.cn/large/9150e4e5gy1fs57bizowvg20dc0ehmyd.gif':continueelse:response = requests.get(img)filename = './img/表情{}.png'.format(self.name)print('正在爬取第{}张表情包'.format(self.name))with open(filename, 'wb') as f:f.write(response.content)self.name += 1

以上就是对表情包网站的爬取的全部分析,下面是完整代码:

'''
提示:
本次爬取使用到的库有requests, lxml
安装方法:win+R pip install xxx(需要安装的库)
'''import requests
from lxml import etreeclass BqbSpider(object):def __init__(self):self.header = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36'}self.name = 1def get(self, url):res = requests.get(url, headers=self.header)html = res.content.decode('utf-8')return htmldef parse_picture(self, html):tree = etree.HTML(html)li_lst = tree.xpath('//ul[@id="post_container"]/li')img_lst = []for li in li_lst:img_url = li.xpath('./div/a/img/@src')for img in img_url:img_lst.append(img)# print(img_lst)return img_lstdef save(self, img_lst):for img in img_lst:if img == 'https://ws4.sinaimg.cn/large/9150e4e5gy1fs57bizowvg20dc0ehmyd.gif':continueelse:response = requests.get(img)filename = './img/表情{}.png'.format(self.name)print('正在爬取第{}张表情包'.format(self.name))with open(filename, 'wb') as f:f.write(response.content)self.name += 1def main(self):# 用于翻页爬取for i in range(1, 14):url = 'http://www.bbsnet.com/biaoqingbao/page/{}'.format(i)html = self.get(url)img_lst = self.parse_picture(html)self.save(img_lst)if __name__ == '__main__':b = BqbSpider()b.main()

至此就是本篇文章的所有内容,有不足之处请多多指出。

Python爬虫爬取表情包相关推荐

  1. Python爬虫爬取表情包+Autojs微信自动导入表情包脚本(附源码)

    废话不多说直接开始 Python爬取表情包 一.检查网页源码 发现可以找到图片地址,直接请求图片地址下载图片 二.打开开发者工具(F12) 通过xpath提取p标签下的img标签src属性为图片地址 ...

  2. python爬表情包_教你用Python来爬取表情包网站的所有表情图片

    教你用Python来爬取表情包网站的所有表情图片 配置环境 安装Python 开发环境 3X系列 win + R 打开运行,输入cmd,输入python,进行验证是否安装Python win + R ...

  3. 妹子说我没有表情包?没关系通过python爬虫爬取表情

    需求分析 昨天,我被一个妹子嘲笑了,"仙草,你天天聊天,怎么连一个表情包都没有啊?每次发也是用系统推荐的默认表情,和一个土狗似的,笑死人了." 啊这,确实,我从来都不保存表情,所以 ...

  4. Python多线程爬取表情包,代码都放在最后了

    文章目录 一.写在前面 二.步骤解析 三.效果展示 一.写在前面 从老马的两大聊天软件,到其它的各种软件,表情包一直都是中国互联网用户的「心头好」,时至今日,表情包已然成为必不可少的聊天方式. 无论是 ...

  5. python入门爬取表情包

    九年义务教育加三年高考,从来没有过过这么紧张充实的暑假,生怕自己来学校了啥都没学到心慌慌,马上大二了,我慌啊,害怕小学弟学妹们进来了我却当不起这个学姐,到时候别人问我啥我 啥都不会啊:虽然我现在也感觉 ...

  6. 斗图高手教你用Python批量爬取表情包

    前言 昨天跟小伙伴斗图,关于斗图这件事,我表示我从来没有输过.至于为什么不会输,这些都是男人的秘密,今天我想把这个小技 巧告诉大家.学会了记得挑战你最好的朋友,打赌让他输了请你吃大西瓜- 1.介绍 • ...

  7. Python多线程爬取表情包,1秒下载五十张表情包!

    前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. PS:私信博主01  领取此项目完整代码! Python学习资料免费领取 从 ...

  8. Python多线程爬取表情包,1秒下载五十张表情包

    前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取 pyt ...

  9. python表情包爬虫程序_Python网络爬虫7 - 爬取表情包

    为了逗女朋友开心,想找一堆表情包,那么作为一名程序员,自然是会想到用程序来完成这个事情,而Python爬虫就是一个非常好的方法. 我先找到了一个专门发布表情包的网站,就叫做 分析站点 为了不引起不适, ...

最新文章

  1. conda 基本操作
  2. Linux常用基本命令:三剑客命令之-awk输入输出分隔符
  3. 极简写作语言-Markdown
  4. 使用 Gitee 进行代码管理(包括本地仓库如何同时关联Git和Gitee)
  5. [ASP.NET]EF选一个空表的情况
  6. Arthas 使用的四种方式
  7. linux安装多个mysql数据库_linux下多个mysql5.7.19(tar.gz)安装图文教程
  8. 线段树专题-黑白棋盘 BZOJ-1453
  9. swiftui 跳转_酷!苹果推出 SwiftUI,提高编程效率
  10. php机器人聊天对话框,仿机器人聊天窗口(热身)
  11. 测试是个艺术活儿:测试需求分工原则
  12. 最新电脑cpu性能排行服务器,至强cpu天梯图2020_intel服务器cpu排行榜2020
  13. Cesium 三角测量(水平距离,直线距离,高度差)
  14. FastAPI 是什么?
  15. 【我的OpenGL学习进阶之旅】着色器编译器和程序二进制码
  16. 免费开源好用还佛系的国产PDF软件:pdf补丁丁下载 | 含pdf补丁丁使用手册
  17. 学习自我管理和自我营销
  18. Landesk学习笔记1_Landesk三种拖送方式
  19. comsol纳米光学案例分析
  20. 常见实用网站集合(行业研究/政策研究/学习/办公/设计/编程)

热门文章

  1. 信息化计算机学什么作用,信息化教学在计算机技术课程的应用
  2. Office-PPT如何使多张图片自动等距排列
  3. 华为防火墙NAT策略
  4. 192.168.8.1手机登陆_192.168.1.101登陆页面手机进入 即可登陆
  5. Kali Linux渗透测试——无线渗透
  6. Spring框架的基本使用
  7. 微软服务器模式表格多维,用挖掘功能实现多元回归分析
  8. CASS3D旗靓版20220402版本更新了,更稳定【下载地址文末】
  9. Z05 - 028、分析模型
  10. BUUCTF misc第二页WP