当前位置: 首页 > article >正文

爬虫基础之爬取表情包GIF

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

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

爬取步骤:

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

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

        

#导包
import requests

url = '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 属性

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 gif
    end = src.split('.')[-1]
    

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

#向图片地址发送请求 获取二进制的数据 音乐 电影 图片视频都是以二进制形式保存
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 循坏

 

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

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

        

        


http://www.kler.cn/a/461953.html

相关文章:

  • 景区自助售卡机与定点酒店的合作双赢之策-景区酒店方案
  • 深入 Redis:高级特性与最佳实践
  • 微信小程序滑动解锁、滑动验证
  • Java 性能调优实战
  • AcWing练习题:差
  • 设计模式 创建型 单例模式(Singleton Pattern)与 常见技术框架应用 解析
  • Pyqt+Opencv的练习
  • 【嵌入式硬件】嵌入式显示屏接口
  • CTFshow-pwn刷题
  • Mongodb日志报错too many open files,导致mongod进程down
  • 主数据驱动的数据治理框架
  • 探索 Yocto-Meta-OpenEuler:嵌入式开发的强大基石
  • [卫星遥感] 解密卫星目标跟踪:挑战与突破的深度剖析
  • OkHttp深度解析:请求流程、分发器机制、拦截器工作及TCP连接复用
  • 算法-Excel字母表转换成数字 26进制转换
  • Mono里运行C#脚本17—load_tables
  • ica1
  • 青云客-网页端语音机器人
  • 笔上云世界微服务版
  • LabVIEW声波谐振管自动化测量系统
  • 33. 简易内存池
  • 使用jest-axe为你的前端项目自动化测试
  • 免费又开源:企业级物联网平台的新选择 ThingsPanel
  • 如何使用 OpenCV 扫描图像、查找表和时间测量
  • 数据结构与算法之查找
  • Python大数据可视化:基于大数据技术的共享单车数据分析与辅助管理系统_flask+hadoop+spider