爬虫基础之爬取表情包GIF

embedded/2025/1/3 18:34:12/

网站地址 : 热门表情_发表情,表情包大全fabiaoqing.com

爬取思路: 通过开发者工具找到包含页面表情包的数据包 通过re parsel css等解析提取数据

爬取步骤:

一. 请求数据 模拟浏览器向服务器发送请求

        打开F12 or 右击开发者模式
        Ctrl+F 打开搜索框 输入要找寻的数据 找到服务器返回的数据包
        将标头中的url地址复制过来 其实也就是浏览器框里的地址

        

python">#导包
import requestsurl = 'https://fabiaoqing.com/biaoqing/lists/page/3.html'
# 服务器返回的数据  response响应体对象
# 此网站没有反爬机制不需要添加请求头就可以请求到数据
resp = requests.get(url)print(resp.text)

 Ctrl+F 确认数据是否正确


二. 提取数据 提取我们想要的数据
      表情包的名称和地址
提取方式:

  1. re 正则表达式  能够从文本中提取数据
  2. xpath  路径提取器  从xml 或者是 html 中根据路径提取数据
  3. css 选择器    能够从html中选择标签  语法和前端的css语法相同
  4. parsel  从HTML和XML文档中提取数据的Python库,它依赖于lxml解析器,并且提供了类似于jQuery的选择器语法 也是scrapy的组件    可以使用css 和 xpath 语法提取数据

本案例采用parsel模块进行解析  

提取img标签中的data-original 属性

python">import parsel
# 服务器返回的数据  response响应体对象
resp = requests.get(url)
# 实例化 Selector对象
selector = parsel.Selector(resp.text)
# 使用对应的语法进行提取
gif_url = selector.css('.tagbqppdiv a')
#定义一个变量 方便保存图片
num = 1
for i in gif_url:src = ''.join(i.css('img::attr(data-original)').getall()[0])# 将地址进行切割 取到每个图片的后缀名 jpg gifend = src.split('.')[-1]

三. 保存数据 将图片保存到本地
        

python">#向图片地址发送请求 获取二进制的数据 音乐 电影 图片视频都是以二进制形式保存
content = requests.get(url=src).content
# 以二进制写入文件  在当前代码目录中 新建一个img文件夹 或使用os模块自动创建都可以
with open('img\\'+str(num)+'.'+f'{end}','wb') as f:f.write(content)
num+=1

运行代码

想要看到下载进度的可以下载 tqdm 模块

导包 from tqdm import tqdm 
在for 循坏遍历时加上 for i in tqdm(gif_url)即可
os:操作文件目录模块  import os  内置模块
if not os.path.exists('img\\'):os.mkdir('img\\')  


        

 Explain:
        此网站复制图片的地址在浏览器打开是打开不了的,但可以进行正常的保存

 到此一页的表情包采集完毕 
多页采集需改变page页码即可  多页采集嵌套for 循坏

 

python">for page in range(1,6):url = f'https://fabiaoqing.com/biaoqing/lists/page/{page}.html'

        本次的案例分享到此结束 感谢大家的观看 您的点赞和关注是我跟新的动力 谢谢

        

        


http://www.ppmy.cn/embedded/150732.html

相关文章

【UVM】搭建一个验证平台

UVM环境组件 组件功能 sequence_item:包装数据 UVM中,所有的transaction都要从uvm_sequence_item派生sequence item是每一次driver与DUT互动的最小粒度内容sequence:产生数据 uvm_sequence是一个参数化的类,其参数是transactio…

io多路复用, select, poll, epoll

系列文章目录 异步I/O操作函数aio_xxx函数 https://blog.csdn.net/surfaceyan/article/details/134710393 文章目录 系列文章目录前言一、5种IO模型二、IO多路复用APIselectpollepoll 三、两种高效的事件处理模式Reactor模式Proactor模式模拟 Proactor 模式基于事件驱动的非阻…

JVS低代码快速开发中“实体之间的关系”配置,表单引擎子表构建全攻略

主从表在实际的项目建设场景中非常常见,主要是用于对两个实体之间的关系的说明 ,我举个例子: 订单和采购商品的明细,是1个订单对应N个商品,那么关系是订单:销售商品1:N ; 我们再看下学生和老师的关系&#…

STM32 + 移远EC800 4G通信模块数传

一、4G模块简述 EC800M-CN 是移远通信(Quectel)推出的一款高性能、超小尺寸的 LTE Cat 1 无线通信模块,专为 M2M(机器对机器)和 IoT(物联网)应用设计。它具有以下主要特点: 通信速率…

Objective-C语言的软件开发工具

Objective-C语言软件开发工具的探讨与分析 引言 Objective-C是一种面向对象的编程语言,它在苹果公司的操作系统(如iOS和macOS)的软件开发中扮演着重要的角色。尽管近年来Swift语言逐渐成为推荐的开发语言,但Objective-C依然在许…

Android音频效果处理:基于`android.media.audiofx`包的原理、架构与实现

Android音频效果处理:基于android.media.audiofx包的原理、架构与实现 目录 引言Android音频框架概述android.media.audiofx包简介音频效果处理的原理 4.1 音频信号处理基础4.2 常见音频效果android.media.audiofx的架构设计 5.1 类结构分析5.2 设计模式应用系统定制与扩展 6…

第 28 章 - ES 源码篇 - Elasticsearch 启动与插件加载机制解析

前言 不管是什么框架,启动类里面做的一定是初始化的工作! 启动 ES 节点的启动逻辑,全部都在 org.elasticsearch.bootstrap 包下。 启动类为:Elasticsearch#main(final String[] args) 与大多数框架启动类一致。启动类主要负责的…

WPF使用OpenCvSharp4

WPF使用OpenCvSharp4 创建项目安装OpenCvSharp4 创建项目 安装OpenCvSharp4 在解决方案资源管理器中,右键单击项目名称,选择“管理 NuGet 包”。搜索并安装以下包: OpenCvSharp4OpenCvSharp4.ExtensionsOpenCvSharp4.runtime.winSystem.Man…