python多线程爬表情包,斗图斗够瘾~

Python多线程爬取表情包 多线程爬取表情包 有一个网站,叫做“斗图啦”,网址是:https://www.doutula.com/。这里面包含了许许多多的有意思的斗图图片,还蛮好玩的。有时候为了斗图要跑到这个上面来找表情,实在有点费劲。于是就产生了一个邪恶的想法,可以写个爬虫,把所有的表情都给爬下来。这个网站对于爬虫来讲算是比较友好了,他不会限制你的headers,不会限制你的访问频率(当然,作为一个有素质的爬虫工程师,爬完赶紧撤,不要把人家服务器搞垮了),不会限制你的IP地址,因此技术难度不算太高。但是有一个问题,因为这里要爬的是图 阅读详情

前言

嗨喽!大家好,这里是魔王。

什么?群里又在斗图 (+_+)? 别动让我来(>人<;)

教你一招爬取海量表情包图片, 从此告别图慌 !!!

课 题:python爬取海量表情包

在这里插入图片描述

课程亮点:

  • 系统分析目标网页
  • html标签数据解析方法
  • 海量图片数据一键保存
    在这里插入图片描述

环境介绍:

  • python 3.8
  • pycharm

模块使用:

  • requests >>> pip install requests
  • parsel >>> pip install parsel
  • time 时间模块 记录运行时间
    在这里插入图片描述

流程:

一. 分析我们想要的数据内容 是可以从哪里获取

  1. 表情包 >>> 图片url地址 以及 图片名字
  2. 对于开发者工具的使用 >>>

二. 代码实现步骤

  1. 发送请求
    确定一下发送请求 url地址
    请求方式是什么 get请求方式 post请求方式
    请求头参数 : 防盗链 cookie …
    在这里插入图片描述

  2. 获取数据
    获取服务器返回的数据内容
    response.text 获取文本数据
    response.json() 获取json字典数据
    response.content 获取二进制数据 保存图片/音频/视频/特定格式文件内容 都是获取二进制数据内容
    在这里插入图片描述

  3. 解析数据
    提取我们想要的数据内容
    I. 可以直接解析处理
    II. json字典数据 键值对取值
    III. re正则表达式
    IV. css选择器
    V. xpath
    在这里插入图片描述

  4. 保存数据
    文本
    csv
    数据库
    本地文件夹
    在这里插入图片描述

导入模块

import requests  # 数据请求模块 第三方模块 pip install requests
import parsel  # 数据解析模块 第三方模块 pip install parsel
import re  # 正则表达式模块
import time  # 时间模块
import concurrent.futures

单线程爬取10页数据

1. 发送请求

start_time = time.time()

for page in range(1, 11):
    url = f'https://fabiaoqing.com/biaoqing/lists/page/{page}html'
     headers = {
         'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36'
     }
     response = requests.get(url=url, headers=headers)
     # <Response [200]> response 对象 200状态码 表示请求成功

2. 获取数据, 获取文本数据 / 网页源代码

# 在开发者工具上面 元素面板 看到有相应标签数据, 但是我发送请求之后 没有这样的数据返回
# 我们要提取数据, 要根据服务器返回数据内容
# xpath 解析方法 parsel 解析模块  parsel这个模块里面就可以调用xpath解析方法
# print(response.text)

3. 解析数据

# 解析速度 bs4 解析速度会慢一些 如果你想要对于字符串数据内容 直接取值 只能正则表达式
     selector = parsel.Selector(response.text) # 把获取下来html字符串数据内容 转成 selector 对象
     title_list = selector.css('.ui.image.lazy::attr(title)').getall()
     img_list = selector.css('.ui.image.lazy::attr(data-original)').getall()
# 把获取下来的这两个列表 提取里面元素 一一提取出来
# 提取列表元素 for循环 遍历
     for title, img_url in zip(title_list, img_list):

4. 保存数据

# split() 字符串分割的方法 根据列表索引位置取值
# img_name_1 = img_url[-3:] # 通过字符串数据 进行切片
# 从左往右 索引位置 是从 0 开始 从右往左 是 -1开始
         # print(title, img_url)
         title = re.sub(r'[\/:*?"<>|\n]', '_', title)
         # 名字太长 报错
         img_name = img_url.split('.')[-1]   # 通过split() 字符串分割的方法 根据列表索引位置取值
         img_content = requests.get(url=img_url).content # 获取图片的二进制数据内容
         with open('img\\' + title + '.' + img_name, mode='wb') as f:
             f.write(img_content)
         print(title)

在这里插入图片描述

多线程爬取10页数据

def get_response(html_url):
    """发送请求"""
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36'
    }
    response = requests.get(url=html_url, headers=headers)
    return response
def get_img_info(html_url):
    """获取图片url地址 以及 图片名字"""
    response = get_response(html_url)
    selector = parsel.Selector(response.text)  # 把获取下来html字符串数据内容 转成 selector 对象
    title_list = selector.css('.ui.image.lazy::attr(title)').getall()
    img_list = selector.css('.ui.image.lazy::attr(data-original)').getall()
    zip_data = zip(title_list, img_list)
    return zip_data
def save(title, img_url):
    """保存数据"""
    title = re.sub(r'[\/:*?"<>|\n]', '_', title)
    # 名字太长 报错
    img_name = img_url.split('.')[-1]  # 通过split() 字符串分割的方法 根据列表索引位置取值
    img_content = requests.get(url=img_url).content  # 获取图片的二进制数据内容
    with open('img\\' + title + '.' + img_name, mode='wb') as f:
        f.write(img_content)
    print(title)

在这里插入图片描述

多进程爬取10页数据

def main(html_url):
    zip_data = get_img_info(html_url)
    for title, img_url in zip_data:
        save(title, img_url)
if __name__ == '__main__':
    start_time = time.time()
    exe = concurrent.futures.ThreadPoolExecutor(max_workers=10)
    for page in range(1, 11):
        # 1. 发送请求
        url = f'https://fabiaoqing.com/biaoqing/lists/page/{page}html'
        exe.submit(main, url)
    exe.shutdown()
    end_time = time.time()
    use_time = int(end_time - start_time)
    print('程序耗时: ', use_time)

在这里插入图片描述

单线程爬取10页数据 61秒时间

多线程爬取10页数据 19秒时间 >>> 13

多进程爬取10页数据 21秒时间 >>> 18
在这里插入图片描述

好了,我的这篇文章写到这里就结束啦!

希望你在python这条路上依心而行,别回头,别四顾。一如既往不改初见的模样,未来的路很长,不管怎样,一定要相信自己一直走下去。

有更多建议或问题可以评论区或私信我哦!一起加油努力叭(ง •_•)ง

喜欢就关注一下博主,或点赞收藏一下我的文章叭!!!

请添加图片描述

【Python实战】海量表情包炫酷来袭,快来pick斗图新姿势吧~(超好玩儿) 身处表情包时代,谁的手机里能没点藏货?正所谓,没有表情包的聊天是没有灵魂的想要成为斗图界的天花板,会点儿代码技术必不可少。想要多少自己取就是了。好啦文章结束,大家记得点点关注哦~ 阅读详情

相关推荐

python爬虫教程:《利用Python爬取表情包》

python爬虫教程:《利用Python爬取表情包》,微信没有表情包?不用愁!老师带领你使用多线程爬虫一键爬取20w的表情包~ 项目源码: ''' 在学习过程中有什么不懂得可以加我的 python学习交流扣扣qun,934109170 群里有不错的学习教程、开发工具与电子书籍。 与你分享python企业当下人才需求及怎么从零基础学习好python,和学习什么内容。 ''' from pyq...

Python新手学习之家 5207

HTML emoji整理

目录emoji大全 例子​编辑清单 设置肤色例子 Emoji 可以使用以下五种不同来修改表情符号: 🏿 深色肤色  🏾 中等深肤色  🏽 中等肤色  🏼 中等浅肤色  🏻 浅肤色Emoji 添加肤色,需要在 Emoji 符号后面添加一个肤色十进制实体 参考于: Emoji 笑脸 | 菜鸟教程 (runoob.com)Emoji 参考手册 | 菜鸟教程 (runoob.com)Emoji 肤色 |

qq_53679247的博客 6067

python批量采集欢乐之源——表情包数据~

嗨喽,大家好呀~这里是爱看美女的茜茜呐无论在什么时候,表情包都是一大神奇~它促进人与人之间的距离~使人和睦关爱的相处😀。

m0_72282564的博客 637

表情包 网页设计 html源码 大作业

【html+css】表情包三页 代码带注释。首页、最新表情、热门表情。

VX_laoxuezhangzy的博客 281

深入理解命名实体识别(NER)

命名实体识别(NER,Named Entity Recognition)是自然语言处理(NLP)中的一项重要技术,用于从文本中识别出特定类型的实体,并将这些实体分类到预定义的类别中。实体通常包括人名、地名、组织名、日期、时间、数量、货币等。例如,在句子“Barack Obama was born in Hawaii in 1961”中,NER任务的目标是识别“Barack Obama”作为人名,“Hawaii”作为地名,以及“1961”作为日期。

AngelCryToo的专栏 4645

[3D检测系列-PV-RCNN] PV-RCNN实战指南:从论文解析到代码调试全流程

本文提供了PV-RCNN在3D目标检测领域的实战全流程指南。文章深入解析了其Point-Voxel融合的核心思想,并详细演示了从环境搭建、数据准备、代码复现到模型训练与调试的具体步骤,特别针对常见的报错问题给出了解决方案,帮助开发者高效掌握这一经典算法。

weixin_29189381的博客 480

Python爬虫之多线程练习——多线程爬取表情包详解

多线程爬取表情包详解1. 普通爬取表情包2.多线程爬取工作原理3.多线程爬取表情包代码 ''' 需求:在斗图网爬取表情包并且保存 网址: https://www.doutula.com/photo/list/?page=1 https://www.doutula.com/photo/list/?page=2 https://www.doutula.com/photo/list/?page=3 目标url形式为 url = 'https://www.doutula.com/photo/list/?page=%

Claire_chen_jia的博客 743

Unity中的坐标系及其转换方法

Unity中的坐标系及其转换方法 Unity中有四种坐标系: 1.全局坐标系 World Coordinate System 全局坐标系是用于描述场景内所有物体位置的方向的基准,也称为世界坐标系,Unity中创建的物体都是以全局坐标系中的坐标原点(0,0,0),来确定各自的位置的,可以使用transform.position来获取游戏对象的世界坐标。 2.局部坐标系 Local Coordinate System 局部坐标系也称为模型坐标系或物体坐标系,每个物体都有自身独立的物体坐标系。当物体移动或改变方向

Z_hongli的博客 8179

【python】分享一个多线程爬虫爬取表情包的代码

多线程爬虫可比单线程爬虫爬取速度多了好几倍,单线程就好比是一辆车来回运输货物,而多线程则是多辆车同时运输货物。需要用到的库requests、lxml、os、threading、queue。该代码还能把数据存储到电脑桌面(明天添加)使用了线程池来高效爬取。...

晋升阁的博客 8万+

openEuler在虚拟机的网络配置

ethernet0.virtualDev 可以配置成其他类型的虚拟网络适配器。常见的选项包括:vlance - 用于模拟 AMD PCnet32 LANCE 网络适配器,支持10Mbps。e1000 - 用于模拟 Intel E1000 千兆网络适配器,支持1Gbps。e1000e - 用于模拟更现代的 Intel E1000e 千兆网络适配器。vmxnet - 用于 VMware 的自定义网络适配器,性能更好但需要安装 VMware Tools。

FHY1221的博客 2933

【推荐100个unity插件】动画重定向,快速在不同角色间共享动画,共用非人形Humanoid(泛型generic)动画——Retarget Pro

Retarget Pro是一款高效的Unity动画重定向工具,可快速在不同角色间共享动画。主要特点包括:1分钟快速设置,支持编辑器和运行时重定向;适用于人形、动物、武器等各类角色;提供基础重定向、IK重定向和FPS专用重定向三种功能模块;通过Rig组件和骨架资产实现骨骼链匹配,支持批量处理。插件包含示例项目和预设资源,操作简便且效果优于Unity原生Humanoid系统,特别适合处理手指等精细动画。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 548

斗图斗不过小伙伴?python多线程爬取斗图网表情包,助你成为斗图帝!

最近python基础课讲到了多线程,老师让交个多线程的实例练习。于是来试试多线程爬虫,正好复习一下mooc上自学的嵩天男神的爬虫知识。想法很美好,过程却很心酸,从早上开始写,每次出现各种奇怪问题,到现在晚上了终于是搞好啦。害得我连晚上的课都没有听,不过看着文件夹中图片蹭蹭的往外冒,心里还是成就感爆棚~ 咳咳,不多bb,本例子是在下面大佬的博客中看见学习的, 实例参考博客链接,根据这位大佬博客做了小...

爱写代码的坤坤的博客 2807

1.2 Spring AI V1.1.2版本 架构全景:模块拆解与设计哲学

Override// 检查请求的 Token 数量throw new TokenLimitExceededException("请求超出 Token 限制");@Override// 记录实际消耗的 Token@Override// 最先执行// 接口// 不同实现// 使用方无需改变定义抽象,保证可移植性提供 Fluent API,提升开发体验Advisor 机制提供扩展点,支持灵活定制模块化设计让你只引入需要的依赖自动配置。

小林夕程的博客 220

表情包:有本事来爬我啊,俺有上千条 python:来啦~

前言 在如今这个人人配一台手机得时代,很多人聊天都是通过网上,但是,怎么样快速缓解尴尬进入快乐而愉快得聊天呢~ 刚认识的朋友丢几个表情包出去分分钟拉进关系,女朋友生闷气了整两个表情包开心一下,也可以化解尴尬,没时间打字整两张表情包,礼貌而不失尴尬。不知道回啥时,那更是丢张表情包分分钟钟解决 现在年轻人聊天,不带点表情包都不好意思说自己是年轻人, 表情包已然成为人与人聊天中不可缺少的部分。 准备工作 准备工作很重要,先知道我们要干啥,用什么来做,怎么做,再去一步步实时,稳扎稳打。 开发环境配置 Pyt

python56123的博客 1921

在iPad上使用Python进行编程

如果你拥有一台iPad,并且想在上面编写和运行Python代码,你会发现iPad提供了一些适用的工具和应用程序来满足你的需求。安装一个Python解释器应用程序,编写和运行Python代码,使用第三方库和模块,以及存储和共享代码,这些步骤将帮助你在iPad上进行Python编程。要在iPad上运行Python代码,首先需要安装一个Python解释器。这些应用程序提供了一个交互式的开发环境,允许你编写、编辑和运行Python代码。一旦你安装了Python解释器应用程序,你可以开始编写Python代码了。

2301_79366435的博客 4628

库存管理系统项目部署方案(基于jdk8)

不需要安装到服务器,运维本地安装就行,主要是用来编译前端代码的。构建完成后将dist文件夹复制到服务器内。

程序员诚哥 2576

多线程爬取表情包,斗图再也难不倒我了

前言 过元旦的这段时间,小编在群里疯狂的抢红包。过程中群里的表情包满天飞,于是小编便去瞄了一眼自己收藏的表情包。 那个数目真是少的可怜啊~ 这不是明摆着不把小编放在眼里么? 于是小编自己动手自己爬取了各种表情包,斗图再也难不倒小编了 哈哈~(猪叫声) 代码 首先快速的导入我们需要的模块,我把相同的表情都放在了同一个文件夹下面,所以需要导入 os 模块 import asy...

weixin_44099558的博客 1066

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

2024年最全斗图高手教你用Python批量爬取表情包_python爬取表情包下载(2)

•平台:斗图啦•语言:python•技术:python多线程、python安全队列、python之Xpath、正则、request以上我们使用的技术,都是之前整理过的对不对,那么我们就根据之前的学习内容来进行爬取斗图表情包吧。

2401_84562768的博客 528

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

python恶搞表情包-关于python表情包

广告关闭2017年12月,云+社区对外发布,从最开始的技术博客到现在拥有多个社区产品。未来,我们一起乘风破浪,创造无限可能。来源:python开发id:pythonpush作为一个数据分析师,应该信奉一句话----一图胜千言。 不过这里要说的并不是数据可视化,而是一款全民向的产品形态----表情包! 表情包不仅仅是一种符号,更是一种文化; 是促进社交乃至社会发展的动力之一,就像懒。 我们坚持认为,...

weixin_37988176的博客 4990

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

python多线程爬取斗图啦数据

python多线程爬取斗图啦网的表情数据 使用到的技术点 requests请求库 re 正则表达式 pyquery解析库,python实现的jquery threading 线程 queue 队列 ''' 斗图啦多线程方式 ''' import requests,time,re,os from pyquery import PyQuery as jq from requ...

weixin_30780221的博客 76

python恶搞表情包-python绘制表情包

广告关闭2017年12月,云+社区对外发布,从最开始的技术博客到现在拥有多个社区产品。未来,我们一起乘风破浪,创造无限可能。python爱好者社区 , 作者 盛光晓表情包是当代社交生态中的战略性武器,既托起了友情的小船,又浮起了爱情的巨轮,还载起了亲情的航空母舰。 在一个又一个宁静又不乏躁动的夜晚,此起彼伏的“老铁666”、“顶你上去”掀起了一阵又一阵的波澜。 当你和别人斗图斗得天昏地暗、地动山摇...

weixin_37988176的博客 1913

python根据关键词下载图片_python爬取 20w 表情包之后,从此你就成为了微信斗图届的高手...

常常有 b 友问我“小帅b,你哪来那么多的表情包”当然是爬取来的啊不瞒你说在我的电脑里面除了一些老师的教程之外还有满满当当的表情包每一个表情包都是那么的生动有趣是它们拯救了我们人类的尴尬是它们拯救了多少的直男是它们...好吧编不下去了答应你们这次腾出点时间就来说说小帅b是怎么玩表情包的https://www.zhihu.com/video/1113201852518199296如何实现的呢?那么接...

weixin_39620278的博客 219

python爬虫教程:《利用Python爬取表情包》,斗图不愁斗就完了

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于腾讯云 作者:python学习教程 ( 想要学习Python?Python学习交流群:1039649593,满足你的需求,资料都已经上传群文件流,可以自行下载!还有海量最新2020python学习资料。 ) 前言 Python现在非常火,语法简单而且功能强大,很多同学都想学Python!所以小的给各位看官们准备了高价值Python学习视频教程及相关电子版书籍,欢迎前来领取!

weixin_49345590的博客 815

用Python在某乎爬取了5W+张表情包,问一句:斗图谁与争锋?

平时聊天的时候输入法都有便捷表情包通道,但感觉数量还是太少,并且不够逗比不够贱啊!不能满足经常斗图的需求,于是我决定从无所不有的互联网中挖掘表情包资源。 这次的爬取目标是人均年薪百万的某乎,里面有关表情包的问答,几乎每个回答都给出了大量的表情包,来自五湖四海的网友在某乎以表情包会友,那我就来把你们发的全部都收集起来~ 首先我们先把所有回答展开,查看全部回答。打开开发者工具,找到回答所在页面,将...

Python免费教程 601

聊天没有表情包被嘲讽,程序员直接用python爬取了十万张表情包

前言 事情要从几天前说起,我有一个朋友,他在和他喜欢的小姐姐聊天时,聊天的气氛一直非常尬,这时他就想发点表情包来缓和一下气氛,但一看自己的表情包收藏都是这样的。。。 。。。这发过去,基本就直接和小姐姐说拜拜了,然后他就向我求救问我有没有表情包,表情包我是没有,但网站有呀,来来,爬虫整起。 分析页面 今天爬取的网站是斗图吧,有一说一表情包是真的多,看这惊人的页数 接下来就该看看怎么拿到表情包图片的url了,首先打开谷歌浏览器,然后点F12进入爬虫快乐模式 然后完成下图的...

python2021_的博客 287
上一篇: 小猫咪能有什么坏心思呢?只是想要你带它回家啦~
下一篇: 想去看演唱却总是抢不到票?教你用Python制作一个自动抢票脚本
魔王不会哭
博客等级 码龄5年 6003粉丝 394原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值