ihhz 发表于 2024-9-26 14:57

小小的下载软件公众号文章~~图片~~下载器

找小孩的资料发现公众号里的资料挺好的,做了个的快速的下载公众号文章里的图片的小小工具~~


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



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()


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

只能 下载图片吗?文章,视频,能不能

yks1985 发表于 2024-9-26 16:16

如果能下载视频就好了。希望后期增加功能

nxyclf 发表于 2024-9-26 16:28

加奈绘 发表于 2024-9-26 16:29

好东西,收藏了

35925 发表于 2024-9-26 16:31

咋使用的,是不是把公众号链接复制进去就可以下载呢

付国兵123 发表于 2024-9-26 16:36

有些付费的,我付过费,但是下载不了。

ihhz 发表于 2024-9-26 16:38

CZ77 发表于 2024-9-26 16:11
win11 专业版,23H2,第一次打开软件复制粘贴公众号链接会自动下载,然后第二次再粘贴就不动了,要关闭软件 ...

我试了一下可以的,就是要不弹出的对话框确定一下~~~

WDsolve 发表于 2024-9-26 17:14

提高效率的小工具
页: [1] 2 3 4
查看完整版本: 小小的下载软件公众号文章~~图片~~下载器