吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2064|回复: 32
上一主题 下一主题
收起左侧

[Python 原创] 小小的下载软件公众号文章~~图片~~下载器

  [复制链接]
跳转到指定楼层
楼主
ihhz 发表于 2024-9-26 14:57 回帖奖励
找小孩的资料发现公众号里的资料挺好的,做了个的快速的下载公众号文章里的图片的小小工具~~


链接: https://pan.baidu.com/s/1NuAEAINVxdLEsOuyCR454w?pwd=8gxe 提取码: 8gxe 复制这段内容后打开百度网盘手机App,操作更方便哦



[Asm] 纯文本查看 复制代码
import requests

import tkinter
from tkinter import messagebox
import os
import re
import pyperclip
import time
import threading


headers = {
    'authority': 'mp.weixin.qq.com',
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.5735.289 Safari/537.36',
}

def getCopyTxet():
    t = pyperclip.paste()
    return t



def imgs(content,headers,title):
    imgs=re.findall('data-src="(.*?)"',content)
    num = 0
    for i in imgs:
        num += 1
        if 'https' in i:
            img_data = requests.get(i,headers=headers)
            print('正在下载图片:'+i)
            try:
                if not os.path.exists('./'+title[:15]):
                    os.mkdir('./'+title[:15])
                with open('./'+title[:15]+'/'+str(num)+'.jpg','wb') as f:
                    f.write(img_data.content)
                ihtit.insert(tkinter.END, '正在下载图片:' + str(i) + '页图片成功~~' + '\n')
            except:
                ihtit.insert(tkinter.END, '正在下载图片出错~~' + '\n')


def copy1():
    last_data = None
    while True:
        data = getCopyTxet()
        if data != last_data:
            last_data = data
            sdata1 = re.search('weixin\\.qq', data)
            if sdata1 != None:
                print(data)
                data = data.replace('&', '&')
                print(data)
                res = requests.get(data, headers=headers)
                content = res.text
                title = re.search(r'var title = \'(.*)\'', content).group(1)
                print(title)
                imgs(content, headers, title)
                messagebox.showinfo('提示', '下载完成~~~请继续复制新文章~~')
                print('下载完成~~~')
                ihtit.delete('1.0','end')
        time.sleep(1)



win = tkinter.Tk()
win.geometry('480x280')
win.title('公众号图片下载器')

ihLabel2=tkinter.Label(win, text='请复制公众号文章连接~~~~自动下载文章的图片~~~!',font=('宋体', '9'))
ihLabel2.place(x=20,y=15,height=19)

ihtit = tkinter.Text(win, font=('宋体', '9'))
ihtit.place(x=15, y=51, width=450, height=183)
t = threading.Thread(target=copy1)
t.start()
win.mainloop()


免费评分

参与人数 7吾爱币 +12 热心值 +6 收起 理由
molazbyc + 2 + 1 谢谢@Thanks!
pmy + 1 + 1 我很赞同!
苏紫方璇 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
wuyanzu0318 + 1 我很赞同!
yanglinman + 1 谢谢@Thanks!
hgh110110 + 1 用心讨论,共获提升!
zzli + 1 + 1 谢谢@Thanks!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

推荐
wudalang123 发表于 2024-9-28 08:20
修改这个脚本以适应不同的微信公众号文章链接格式

    更新正则表达式:
        文章链接和图片链接的提取依赖于正则表达式,如果微信公众号的链接格式发生变化,你需要更新相应的正则表达式。
        例如,如果文章链接的域名从 mp.weixin.qq.com 变为其他域名,你需要更新 headers 字典中的 'authority' 键值。

    调整文章内容提取逻辑:
        如果微信公众号的文章内容结构发生变化,你可能需要调整用于提取文章标题和内容的代码。
        例如,如果标题的提取方式从 var title = '(.*)' 变为其他方式,你需要更新 re.search 中的正则表达式。

    调整图片链接提取逻辑:
        如果图片链接的属性从 data-src 变为其他属性,你需要更新 re.findall 中的正则表达式。

以下是一些具体的修改步骤:
1. 更新正则表达式

假设新的链接格式是 https://newdomain.com/weixin/article?id=123,你可以这样更新:

python

headers = {
    'authority': 'newdomain.com',
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.5735.289 Safari/537.36',
}

2. 调整文章内容提取逻辑

假设新的标题提取方式是 var newTitle = '(.*)':

python

def imgs(content, headers, title):
    title = re.search(r'var newTitle = \'(.*)\'', content).group(1)
    print(title)
    imgs = re.findall('data-src="(.*?)"', content)
    num = 0
    for i in imgs:
        num += 1
        if 'https' in i:
            img_data = requests.get(i, headers=headers)
            print('正在下载图片:' + i)
            try:
                if not os.path.exists('./' + title[:15]):
                    os.mkdir('./' + title[:15])
                with open('./' + title[:15] + '/' + str(num) + '.jpg', 'wb') as f:
                    f.write(img_data.content)
                ihtit.insert(tkinter.END, '正在下载图片:' + str(i) + '页图片成功~~' + '\n')
            except:
                ihtit.insert(tkinter.END, '正在下载图片出错~~' + '\n')

3. 调整图片链接提取逻辑

假设图片链接的属性从 data-src 变为 data-newsrc:

python

imgs = re.findall('data-newsrc="(.*?)"', content)

完整的修改后的脚本示例:

python

import requests
import tkinter
from tkinter import messagebox
import os
import re
import pyperclip
import time
import threading

headers = {
    'authority': 'newdomain.com',
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.5735.289 Safari/537.36',
}

def getCopyTxet():
    t = pyperclip.paste()
    return t

def imgs(content, headers, title):
    imgs = re.findall('data-newsrc="(.*?)"', content)
    num = 0
    for i in imgs:
        num += 1
        if 'https' in i:
            img_data = requests.get(i, headers=headers)
            print('正在下载图片:' + i)
            try:
                if not os.path.exists('./' + title[:15]):
                    os.mkdir('./' + title[:15])
                with open('./' + title[:15] + '/' + str(num) + '.jpg', 'wb') as f:
                    f.write(img_data.content)
                ihtit.insert(tkinter.END, '正在下载图片:' + str(i) + '页图片成功~~' + '\n')
            except:
                ihtit.insert(tkinter.END, '正在下载图片出错~~' + '\n')

def copy1():
    last_data = None
    while True:
        data = getCopyTxet()
        if data != last_data:
            last_data = data
            sdata1 = re.search('weixin\\.qq', data)
            if sdata1 != None:
                print(data)
                data = data.replace('&', '&')
                print(data)
                res = requests.get(data, headers=headers)
                content = res.text
                title = re.search(r'var newTitle = \'(.*)\'', content).group(1)
                print(title)
                imgs(content, headers, title)
                messagebox.showinfo('提示', '下载完成~~~请继续复制新文章~~')
                print('下载完成~~~')
                ihtit.delete('1.0', 'end')
        time.sleep(1)

win = tkinter.Tk()
win.geometry('480x280')
win.title('公众号图片下载器')

ihLabel2 = tkinter.Label(win, text='请复制公众号文章连接~~~~自动下载文章的图片~~~!', font=('宋体', '9'))
ihLabel2.place(x=20, y=15, height=19)

ihtit = tkinter.Text(win, font=('宋体', '9'))
ihtit.place(x=15, y=51, width=450, height=183)
t = threading.Thread(target=copy1)
t.start()
win.mainloop()
推荐
CZ77 发表于 2024-9-26 16:11
win11 专业版,23H2,第一次打开软件复制粘贴公众号链接会自动下载,然后第二次再粘贴就不动了,要关闭软件重新打开才行。
沙发
李亲顾 发表于 2024-9-26 15:31
4#
yks1985 发表于 2024-9-26 16:16
如果能下载视频就好了。希望后期增加功能
头像被屏蔽
5#
nxyclf 发表于 2024-9-26 16:28
提示: 作者被禁止或删除 内容自动屏蔽
6#
加奈绘 发表于 2024-9-26 16:29
好东西,收藏了
7#
35925 发表于 2024-9-26 16:31
咋使用的,是不是把公众号链接复制进去就可以下载呢
8#
付国兵123 发表于 2024-9-26 16:36
有些付费的,我付过费,但是下载不了。
9#
 楼主| ihhz 发表于 2024-9-26 16:38 |楼主
CZ77 发表于 2024-9-26 16:11
win11 专业版,23H2,第一次打开软件复制粘贴公众号链接会自动下载,然后第二次再粘贴就不动了,要关闭软件 ...

我试了一下可以的,就是要不弹出的对话框确定一下~~~
10#
WDsolve 发表于 2024-9-26 17:14
提高效率的小工具
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 09:51

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表