您现在的位置是:首页 >技术杂谈 >【python】你的表情包缺不缺?我猜你缺了~来批量获取一波吧~网站首页技术杂谈

【python】你的表情包缺不缺?我猜你缺了~来批量获取一波吧~

魔王不会哭 2023-06-27 04:00:03
简介【python】你的表情包缺不缺?我猜你缺了~来批量获取一波吧~

前言

嗨喽~大家好呀,这里是魔王呐 ❤ ~!

在我们的生活中,总少不了表情包来调剂

少了表情包就会少了很多趣味

今天就来教大家如何批量下载我们的表情包

环境使用:

  • Python 3.8

  • Pycharm 2021.2版本

模块使用:

内置模块:

  • import re

第三方模块:

  • import requests >>> pip install requests

第三方模块安装:

win + R 输入cmd 输入安装命令 或 在pycharm中点击Terminal(终端) 输入安装命令

如果出现爆红, 可能是因为 网络连接超时, 可切换国内镜像源,命令如下:

pip install -i https://pypi.doubanio.com/simple/ requests

如何去实现本次案例: <通用模板>

一. 数据来源分析

1. 明确自己采集数据, 是来自于哪里

    - 图片标题

    - 图片链接


通过浏览器自带工具: 开发者工具

    进行抓包分析

    1. 打开开发者工具: 鼠标右键点击检查选择network / F12

    2. 刷新网页: 为了让本网页数据内容重新加载一遍

    找到图片链接: 

    ---> 分析有没有地方, 把所有图片地址都包含

    3. 通过开发者工具: 搜索功能去搜索查询对应数据包在哪里

       由一个数据 ---> 分析找到相关所有数据来源地址

二. 代码实现步骤: 基本四大步骤 发送请求, 获取数据, 解析数据, 保存数据

采集一页数据:

1. 发送请求, 模拟浏览器对于url地址发送请求

2. 获取数据, 获取服务器返回响应数据

    开发者工具: response <网页源代码>

3. 解析数据, 提取我们想要的数据内容

    - 图片标题

    - 图片链接

4. 保存数据, 把图片内容保存到本地文件夹

代码展示

导入模块

# 导入数据请求模块 --> 第三方模块 需要安装 pip install requests  <手机第三方APP 需要自己下载>
import requests
# 导入正则模块 --> 内置模块 不需要安装  <相当于手机自带APP>
import re
# 导入文件操作模块 --> 内置模块 不需要安装
import os

“”"

- 导入模块是灰色, 不是报错 <没有使用模块>

- 模拟浏览器
    如果不伪装模拟: 可能会被识别出来是爬虫程序, 从而得不到数据
    headers 请求头 --> 直接去复制
    
- 请求方法选择是根据开发者工具来的 <根据浏览器来的>

- <Response [200]> 
    Response: 响应
    <> : 对象
    200:状态码 表示请求成功

“”"

采集多页数据内容: 分析请求url的参数变化规律

for page in range(26, 251):
    print(f'=====================正在采集第{page}页的数据内容=====================')

确定请求链接 f 字符串格式化方法, 把page传入到 url 这个字符串中间

    url = f'https://fabiaoqing.com/biaoqing/lists/page/{page}.html'

伪装模拟 字典数据类型, 构建完整键值对

    headers = {
        # User-Agent 用户代理, 表示浏览器基本身份信息
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36'
    }

调用requests模块里面get请求方法, 对于url地址发送请求, 并且携带上headers请求头伪装, 最后用自定义变量名response接收返回数据

    response = requests.get(url=url, headers=headers)
"""

开发者工具: response <网页源代码>

response --> <Response [200]>

text --> 文本

response.text: 获取响应文本数据, 网页源代码

re模块findall方法 找到所有数据

re.findall('匹配什么数据', '什么地方')

"""
    img_info = re.findall('<img class="ui image lazy" data-original="(.*?)" src=".*?" title="(.*?)" ', response.text)

for循环遍历, 把列表里面元素 一个一个提取出来

    for img_url, img_name in img_info:
        # img_info <列表: 箱子盒子> img_url, img_name <箱子里面东西>
        print(img_url, img_name)
    """

        response.content 获取二进制数据
        保存 音频/视频/图片/特定格式文件<PDF, zip...>

    """
        img_content = requests.get(url=img_url, headers=headers).content

自动创建文件夹 转义字符串, 把含有特殊含义字符, 转义成除了本身以外不含有其他特殊含义

        filename = 'data\'
        # 判断是否存在这个文件
        if not os.path.exists(filename):
            # 自动创建文件夹
            os.mkdir(filename)
        # 根据图片自己的后缀
        img = img_url.split('.')[-1]
        # 替换特殊字符
        new_name = re.sub(r'[/:*?"<>|]', '', img_name)
        # len() 统计元素个数
        if len(new_name) > 20:
            new_name = new_name[:10]
    """
    OSError: [Errno 22] Invalid argument: 'data\这盒里吗?.gif'
        含有特殊字符
    """
        with open(filename + new_name + '.' + img, mode='wb') as f:

写入数据

            f.write(img_content)

尾语 💝

要成功,先发疯,下定决心往前冲!

学习是需要长期坚持的,一步一个脚印地走向未来!

未来的你一定会感谢今天学习的你。

—— 心灵鸡汤

本文章到这里就结束啦~感兴趣的小伙伴可以复制代码去试试哦 😝

👇问题解答 · 源码获取 · 技术交流 · 抱团学习请联系👇

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。