最新版:微信公众号文章下载器,用于下载微信公众号的所有文章
优采云 发布时间: 2022-09-29 00:29最新版:微信公众号文章下载器,用于下载微信公众号的所有文章
————————————————————————————————————————————————————— ——
我以前用论坛里一个大佬的软件(WeChatDownload)下载文章。后来微信版本更新了,需要用老版本的微信才能用,就搞定了。设计比较简单,就是按部就班,没有使用多线程之类的,功能也没有之前的boss那么多。
软件环境:VS2015+C#+.NET4.0+Fiddler+SQLITE
SQLITE用于存储文章列表信息:标题、链接、状态、文章类型等信息
本软件提供源代码,有基本注释,需要的可以下载修改。
附加说明:
1、文章下载后放在软件根目录,公众号命名的文件夹
2、显示ok 2022/6/20 16:37:57的消息表示文章列表获取成功,文章列表存储在SQLITE数据库中,即: Database.db 该文件可以使用 SQLite Expert Personal 软件打开,该软件有免费版本。当公众号有很多文章时,需要一定的时间才能完成下载。
3、出现:成功:文章Title(),得到文章成功。2022/6/20 16:38:41 表示开始下载文章,出现这个时,只有公众号命名的文件夹,文章的发布时间和文章@的标题> 将在根目录下命名为 html 文件。
补充2:
Q:下载过程中,中途停止(意外/主动)怎么办?
答:中途停车有两种情况
一是停止文章 列表的下载。下次重新获取后,需要从头重新获取文章列表,但是重复的文章不会保存,只会保存最后一次。未保存 文章。
(想了想,不知道暂停是一天,一个月,还是一年,所以没有设计保存上次得到的offset,自己做的话可以加个将offset保存到数据表中,下次从这个offset开始。不过有一种情况需要考虑,就是挂了很久,挂的时候更新了很多文章 )
一种是下载文章时停止,这个没有效果。下次重启后,会从下一个未保存的文章开始保存(数据库记录了哪一个被下载了)。
文章列表获取原理:当一个文章列表获取完成后,最后一次完整获取的时间会记录在数据表中。下次获取同一个公众号时,将从最新的获取。,然后一直到最后一次完整提取时间的前 3 天。例如,最后一次完整的收购是在 2022 年 6 月 3 日。这一次,将从最晚开始,一直持续到2022-6-1。多余的日子是为了防止丢失文章。
所以如果 文章 的列表一次没有被完全抓取,那么每次都会从头到尾抓取。
文章存储形式
软件功能:获取公众号中的所有文章,然后保存为HTML文件。一个 文章一个 HTML 文档。
未实现的功能:付费文章隐藏的不能下载,视频不能下载,音频不能下载。图片没下载,直接用图片链接地址。
下载时间:假设1000篇文章文章,如果没有错误等,下载完成所需时间:1000/10*20+1000*20=6.2小时。
获取文章列表的参数每30分钟过期一次,1000篇文章中间需要再次获取参数。
如果觉得时间太长,可以自行修改采集时间间隔。不建议太快。太频繁可能会触发微信的反采集机制,限制某个公众号的访问。
因为采集太快了,公众号的访问受限一段时间,一般第二天就会恢复。(我测试了采集几个公众号,间隔20秒,总数有几千个文章没有限制访问)
注:虽然采集已测试多个公众号,但由于微信文章形式多样,可能存在采集错误或采集后的内容与原文。
测试平台(VB虚拟机):WIN7_X86+.NET4.0,WIN7_X64+.NET4.0,WIN10_X86,WIN10_X64,微信版:3.7.0
*敏*感*词*演示:
界面
会话参数的有效时间为 30 分钟。如果超过30分钟就会超时,需要重新获取。
重新获取会话参数
指示:
1、先关闭所有开放的公众号文章。
2、点击【①获取参数】,然后打开公众号下载文章,在公众号中选择打开任意一个文章。
3、文章加载完成后,获取的参数会显示在【运行日志】中。参数获取完成后,会自动开始获取文章。
4、请不要打开多个软件。
公众号获取文章的流程:
先获取必要的参数->获取公众号的所有文章并合并到SQLITE数据库中->然后从数据库中取出文章,下载并一一标记。
获取内容:
直接保存文章的内容,不做任何处理。图片使用网络地址,没有留言保存,可以自行修改添加。
问题及解决方案:
1、在获取参数时,浏览器可能会出现:【未连接:存在潜在的安全问题】,无法浏览网页。
解决方法:原因可能是Fiddler的证书问题。您只需等待参数采集完成或手动停止参数采集即可恢复。
2、现有公众号文章未关闭时,点击【获取参数】即可获取当前浏览文章的参数。当你想获取另一个公众号的数据时,可能会出现参数错误。
解决方法:先关闭所有正在浏览的公众号文章,然后点击【①获取参数】,再打开需要下载的公众号文章中的任意一个。
3、有信息问题提示错误类。
解决方法:一般可以根据方法重试一次/多次。如果没有,您可以关闭该软件并重新打开它。
4、获取参数后,软件意外关闭或自动关闭,再次访问网页时提示:【代理服务器拒绝连接】。
解决方法:这是因为在获取参数时,软件会修改系统的分代{pass}{filtering}管理。如果不停止,这种世代相传的{passing}{filtering}管理将永远存在。重启软件,点击【①获取参数】,然后点击【①停止获取】。
5、获取文章时,软件意外或主动关闭后,重新打开后,会重复获取或下载之前的文章。
A:不会重复。获取到 文章 的列表时将关闭。下次重新打开后,依然会开始获取第一篇文章,发现重复自动跳过。
下载文章时关闭,下次重新打开时,会从下一个未下载的文章开始下载。
6、由于Fiddler证书安装问题,可能会出现其他未知错误。请使用搜索引擎查找相关解决方案,或提供可重现的解决方案进行回复。
7、有时候,打开文章后,参数并没有完全获取到,采集也没有执行。
解决方法:关闭文章再打开一篇文章文章,尽量不要使用刷新,有些参数只有第一次才有。
8、软件被WIN10的安全中心删除了怎么办?
解决方法:通过安全中心添加到排除列表。
最新信息:python自动获取微信公众号最新文章的实现代码
目录
微信公众号获取思路
获取微信公众号文章常用的方法有搜狐、微信公众号首页和api接口。
听说最近搜狐不太好用,而且之前使用的API接口也经常维护,所以使用微信公众平台进行数据爬取。
首先,登录你的微信公众平台。如果您没有帐户,您可以注册一个。进来后找“图文资料”,就是写公众号的地方
点击后会出现写公众号的界面文章。在界面中,您会找到“超链接”字段,您可以在其中搜索其他公众号。
以“python”为例,输入要检索的公众号名称,从显示的公众号中选择公众号为采集
点击浏览器查看,在网络中找到链接,下图中的链接,右边的Request URL是存储公众号数据的真实链接。表示这是一个 json 网页。
采集实例
以公众号“python”的链接为例,分析URL。
https://mp.weixin.qq.com/cgi-bin/appmsg:微信公众平台的链接
"token": "163455614", #需要定期修改的token
"lang": "zh_CN", #语言
"f": "json",
"ajax": "1", #显示几天的文章
"action": "list_ex"
"begin": "0", #起始页面
"count": "1", #计数
"query": "",
"fakeid": "MzIwNDA1OTM4NQ==", #公众号唯一编码
"type": "9",
由于我发现fakeid是唯一代表公众号的代码,那么我只需要找到所需公众号的fakeid即可。我随机找了三个公众号进行测试。
fakeid=[ "MzIwNDA1OTM4NQ==","MzkxNzAwMDkwNQ==","MjM5NzI0NTY3Mg=="]
<p>
#若增加公众号需要增加fakeid</p>
然后下一步就是请求URL
首先导入需要的库
import time
import requests
from lxml import etree
import pandas as pd
import json
import numpy as np
import datetime
import urllib3
from urllib3.exceptions import InsecureRequestWarning
urllib3.disable_warnings(InsecureRequestWarning)
由于不想重复登录公众号平台,可以使用cookies来避免登录。在请求文章之前,需要先找到网页的cookie和User-Agent。由于微信公众号是定期刷新的,所以这个cookie和上面的token都要定期刷新。代替。
为了避免反扒,最好找个代理ip
headers = {
"Cookie": "appmsglist_action_3567997841=card;wxuin=49763073568536;pgv_pvid=6311844914;ua_id=x6Ri8bc9LeaWnjNNAAAAADI-VXURALRxlSurJyxNNvg=;mm_lang=zh_CN;pac_uid=0_3cf43daf28071;eas_sid=11Q6v5b0x484W9i7W0Z7l7m3I8;rewardsn=;wxtokenkey=777;wwapp.vid=;wwapp.cst=;wwapp.deviceid=;uuid=fd43d0b369e634ab667a99eade075932;rand_info=CAESIHgWwDfp3W4M9F3/TGnzHp4kKkrkMiCEvN/tSNhHtNBm;slave_bizuin=3567997841;data_bizuin=3567997841;bizuin=3567997841;data_ticket=IfMEEajZ8UvywUZ1NiIv9eKZkq0cgeS0oP6tTzEwNSjwK6q+u5vLw0XYeFvLL/JA;slave_sid=aVBzSlpYOGt4eTdmbzFRWDc1OUhzR1A1UkwzdUdBaklDaGh2dWY2MUZKTEw1Um1aalZRUXg5aVBMeEJVNklCcGlVN0s5Z3VEMmRtVENHS1ZxNTBDOWRCR0p2V2FyY2daU0hxT09Remd5YmlhRWExZkMwblpweVc3SndUbnJIQk55MGhUeExJa1NJcWZ0QmJS;slave_user=gh_e0f449d4f2b6;xid=7d5dc56bb7bb526c70cfef3f6bdfa18a",
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.75 Safari/537.36",
}
proxies = {"http": "112.80.248.73"}
接下来可以爬取页面,获取页面中的文章标题和文章链接,以及文章的时间,分析网页的信息,发现所有的信息网页保存在“app_msg_list”字段中,因此提取该字段中的数据。
代码显示如下:
得到的数据包存放在df中。这里的数据不是微信公众号最新的文章数据,而是微信公众号最近一天发送的文章数据。因此,还需要过滤发布时间。注意这里的时间格式是时间戳,所以需要转换时间数据
转换代码如下:
def time_s(df):
def transfer_time(s): #时间处理
aa = time.ctime(s)
<p>
bb = aa.split(" ")
cc = (bb[-1]+"-"+bb[1]+"-"+bb[-3]).replace("Jan","1").replace("Feb","2").replace("Mar","3").
replace("Apr","4").replace("May","5").replace("Jun","6").replace("Jul","7").replace("Aug","8")
.replace("Sep","9").replace("Oct","10").replace("Nov","11").replace("Dec","12")
dd = datetime.datetime.strptime(cc,"%Y-%m-%d").date()
return dd
ti=[]
hd=[]
for i in range(0,len(df["time"])):
timestap= transfer_time(df["time"][i])
ti.append(timestap)
#print(ti)
d= ti[i] + datetime.timedelta(weeks=0, days=0, hours=0, minutes=0, seconds=0, milliseconds=0, microseconds=0, )
#dc = d.strftime("%Y-%m-%d")
hd.append(d)
df["time"]=hd</p>
这样就可以将微信公众号的时间戳数据转换为时间数据,然后根据当天的日期提取数据集中的内容并存储。
dat=df[df["time"] == datetime.date.today() + datetime.timedelta(days= -1)] #自动获取昨天日期,将-1改为-2,则为前天的日期,以此类推
##改自动化
path = "C:/Users/gpower/Desktop/work/行业信息/" #根据自己电脑位置更改
import re
filename=path+"微信公众号采集" + re.sub(r"[^0-9]","",datetime.datetime.now().strftime("%Y-%m-%d")) + ".csv"
# 对文件进行命名,以“微信公众号采集+当前日期”命名
dat.to_csv(filename,encoding="utf_8_sig")
print("保存成功")
这样就可以下载最新的微信公众号文章采集。如果需要多个微信公众号,可以在fakeid中添加公众号的识别码。
这是文章关于python自动获取微信公众号最新文章的介绍。更多关于python自动获取微信公众号文章的信息,请在文章前搜索云海天教程或继续浏览下方相关文章,希望大家以后多多支持云海天教程!