好友
阅读权限10
听众
最后登录1970-1-1
|
修改这个脚本以适应不同的微信公众号文章链接格式
更新正则表达式:
文章链接和图片链接的提取依赖于正则表达式,如果微信公众号的链接格式发生变化,你需要更新相应的正则表达式。
例如,如果文章链接的域名从 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() |
|