小小的下载软件公众号文章~~图片~~下载器
找小孩的资料发现公众号里的资料挺好的,做了个的快速的下载公众号文章里的图片的小小工具~~链接: 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()
修改这个脚本以适应不同的微信公众号文章链接格式
更新正则表达式:
文章链接和图片链接的提取依赖于正则表达式,如果微信公众号的链接格式发生变化,你需要更新相应的正则表达式。
例如,如果文章链接的域名从 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() win11 专业版,23H2,第一次打开软件复制粘贴公众号链接会自动下载,然后第二次再粘贴就不动了,要关闭软件重新打开才行。 只能 下载图片吗?文章,视频,能不能 如果能下载视频就好了。希望后期增加功能 好东西,收藏了 咋使用的,是不是把公众号链接复制进去就可以下载呢 有些付费的,我付过费,但是下载不了。 CZ77 发表于 2024-9-26 16:11
win11 专业版,23H2,第一次打开软件复制粘贴公众号链接会自动下载,然后第二次再粘贴就不动了,要关闭软件 ...
我试了一下可以的,就是要不弹出的对话框确定一下~~~ 提高效率的小工具