安装
pip install wechatarticles
展示地址:
日更两次,获取公众号的最新文章链接,暂不支持实时获取阅读点赞
技术交流可以直接联系,微信二维码见末尾(微信;wnma3mz)。烦请进行备注,如wechat_spider
联系前请注意:
-
不(能)做自动登录微信公众号、微信
-
不(能)做实时获取参数
-
参数过期需要手动更新
-
换一个公众号需要手动更新
注:本项目仅供学习交流,严禁用于商业用途(该项目也没法直接使用),不能达到开箱即用的水平。使用本项目需要读文档+源码+动手实践,参考示例代码(test
文件夹下)进行改写。
提示:另外,已经有很多朋友(大佬)通过直接看源码,已经基于这套项目,或者重写,用于各自的需求。
实现思路一:
- 从微信公众号平台获取微信公众所有文章的url
- 登录微信PC端或移动端获取文章的阅读数、点赞数、评论信息
完整思路可以参考我的博客: 记一次微信公众号爬虫的经历(微信文章阅读点赞的获取)
批量关注微信公众的方法见:自动批量关注微信公众号(非逆向)
实现思路二:
- 登陆微信PC端或移动端获取公众号所有文章的url,这种获取到的url数量大于500,具体数值暂未测试
- 同上种方法,获取文章阅读数、点赞数、评论信息
公开已爬取的公众号历史文章的永久链接,日期均截止commit时间,仅供测试与学习,欢迎各位关注这些优质公众号。
公众号列表
更新于2020年10月
更新微信文章阅读点赞在看
- 爬取失败的时候,可能有以下原因
- 运行的时候需要关闭网络代理(抓包软件),或者添加相关参数
- 参数是否最新,获取微信相关参数(cookie、token)时,一定要保证是对应公众号的任意文章
- 检查代码
- 需要关注对应公众号(Maybe)
- 思路一获取url时,每页间隔可以设定久一点,比如3分钟,持续时间几小时(来自网友测试)
- 获取文章阅读点赞时,每篇文章可以设定在5-10s左右,过期时间为4小时;若被封,大约5-10分钟就可继续抓取。
- 思路二获取url时,如果被封,需要24小时整之后才能重新抓取
python
: 3.6.2、3.7.3
功能
- 利用抓包工具手动获取
- 安装python第三方库`mitmproxy`自动获取(已废弃,可参考源码思路)
- txt存储(不建议)
- mongo存储。需要安装`pymongo`
变量名 | 作用 |
---|---|
official_cookie | 个人公众号的cookie |
token | 个人公众号的token |
appmsg_token | 个人微信号的appmsg_token |
wechat_cookie | 个人微信号的cookie |
key | 个人微信号的key |
uin | 个人微信号的uin |
nickname | 需要获取文章的公众号名称 |
query | 筛选公众号文章的关键词 |
outfile | mitmproxy抓包获取请求的保存文件 |
begin | 从第几篇文章开始爬取 |
count | 每次爬取的文章数(最大为5, 但是返回结果可能会大于5) |
以下完整实例代码见test/
目录下的实例代码。
official_cookie和token手动获取方式见这篇文档
wechat_cookie和appmsg_token手动获取的介绍,可以参考这篇文档
wechat_cookie和appmsg_token自动获取的介绍(需要安装mitmproxy
),可以参考这篇文档。默认开放端口为8080。
此处有次数限制,不可一次获取太多url。解决方案多个账号同时爬取
代码
```python
from wechatarticles import ArticlesAPI
from wechatarticles import ArticlesUrls
# 实例化爬取对象
# 手动输入cookie和token
test = ArticlesUrls(cookie=official_cookie, token=token)
# 输入公众号名称,获取公众号文章总数
articles_sum = test.articles_nums(nickname)
# 输入公众号名称,获取公众号部分文章信息, 每次最大返回数为5个
articles_data = test.articles(nickname, begin="0", count="5")
# 输入公众号名称,获取公众号的一些信息
officical_info = test.official_info(nickname)
# 输入公众号名称,输入关键词,获取公众号相关文章信息, 每次最大返回数为5个
articles_data_query = test.articles(nickname, query=query, begin="0", count="5")
# 输入公众号名称,输入关键词,获取公众号相关文章总数
articles_sum_query = test.articles_nums(nickname, query=query)
```
代码
```python
# 实例化爬取对象
# 手动输入cookie和token
test = ArticlesInfo(appmsg_token=appmsg_token, cookie=wechat_cookie)
# link为微信文章的永久链接
# 获取文章所有的评论信息(无需appmsg_token和cookie)
comments = test.comments(link)
# 获取文章阅读数在看点赞数
read_num, like_num, old_like_num = test.read_like_nums(link)
```
见test/test_GetUrls.py
中method_one
函数,源码:GetUrls.py
利用公众号获取链接,并获取阅读点赞:test/test_ArticlesAPI.py
利用历史文章获取链接,并获取阅读点赞:test/test_GetUrls.py
微信二维码