Python批量处理微信公众号图片资源

背景

最近发现一些公众号的图片资源还是可以利用一下的。本着能让机器干的活绝不能自己动手的原则,于是决定使用Python批量处理,让机器来处理一下。

Python批量处理微信公众号图片资源

实现思路

首先需要找到微信公众号的图片外链的共同特点,例如域名格式等。然后通过匹配这些特点的外链,识别出需要的图片资源。接着,遍历匹配到的外链,进行批量下载。

实现代码

import os
import re
import requests
from urllib.parse import urlparse, parse_qs

# 定义读取文件、匹配网址并保存文件的函数
def extract_and_save_urls(file_name, output_folder='下载图片素材'):
    # 创建输出文件夹(如果不存在)
    if not os.path.exists(output_folder):
        os.makedirs(output_folder)
    
    # 读取文件内容
    with open(file_name, 'r', encoding='utf-8') as file:
        content = file.read()
    
    # 匹配网址的正则表达式
    url_pattern = re.compile(r'https://mmbiz\.qpic\.cn/mmbiz_png/[^\s]+')
    urls = url_pattern.findall(content)
    
    # 下载并保存文件
    for idx, url in enumerate(urls):
        try:
            response = requests.get(url)
            if response.status_code == 200:
                # 解析 URL 以获取文件扩展名
                parsed_url = urlparse(url)
                file_extension = parse_qs(parsed_url.query).get('wx_fmt', [''])[0]
                if not file_extension:  # 默认扩展名为 'png',如果未指定 wx_fmt 参数
                    file_extension = 'png'
                file_name = f'image_{idx+1}.{file_extension}'
                file_name = file_name.replace('"', '').replace(',', '').replace('?', '') # 移除不必要的字符
                file_path = os.path.join(output_folder, file_name)
                with open(file_path, 'wb') as img_file:
                    img_file.write(response.content)
                print(f'Successfully saved {url} as {file_name}')
            else:
                print(f'Failed to download {url}, status code: {response.status_code}')
        except Exception as e:
            print(f'Error downloading {url}: {e}')

# 指定输入输出文件
file_name = 'data.js'  
extract_and_save_urls(file_name)

扩展

目前脚本只实现了对png格式图片的下载,可以扩展到其他格式如jpg、gif、jpeg等图片资源的匹配和下载。另外,目前脚本只能对指定的文件进行下载,可以增加支持读取整个目录下文件的功能。此外,微信公众号上不仅有图片资源,还有音频资源,可以进一步扩展脚本以支持下载公众号上的音频资源。
以上是关于使用Python批量处理微信公众号图片资源的实现思路。

  • 8
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值