微信公众号 API 等相关工具
Project description
微信公众号 API 工具
微信公众平台(微信公众号)API 相关工具,提供公众号搜索、文章列表获取、文章内容下载等功能。
项目地址: https://github.com/morning-start/wxmp
项目简介
wxmp 是一个 Python 库,用于与微信公众平台后台 API 进行交互。通过本项目可以:
- 通过微信登录后的 cookies 获取访问 token
- 搜索公众号(根据关键词查找公众号信息)
- 获取指定公众号的文章列表
- 验证文章链接有效性
- 下载文章内容并转换为 Markdown 格式
- 支持时间范围缓存和增量更新
- 支持并发下载
核心特性
- API 封装: 完整封装微信公众平台后台 API
- 缓存优化: 支持 FakeID 缓存和时间范围缓存,避免重复获取
- 并发下载: 支持多线程并发下载文章内容
- 格式转换: 自动将 HTML 文章转换为 Markdown 格式
- 灵活扩展: 用户可直接使用已有爬虫或基于 API 构建自定义爬虫
- 增量更新: 支持时间范围缓存,只获取新增文章
技术栈
| 技术 | 版本 | 用途 |
|---|---|---|
| Python | >= 3.10 | 开发语言 |
| Pydantic | >= 2.12.5 | 数据模型验证 |
| Requests | >= 2.32.5 | HTTP 请求 |
| Pandas | >= 2.3.3 | 数据处理 |
| Loguru | >= 0.7.3 | 日志记录 |
| tqdm | >= 4.67.3 | 进度条显示 |
| fake-useragent | >= 2.2.0 | 随机 User-Agent |
安装
pip install wxmp
或从源码安装:
git clone https://github.com/morning-start/wxmp.git
cd wxmp
pip install -e .
快速开始
1. 初始化 API
from wxmp import WxMPAPI
cookies = {
"wxuin": "your_wxuin",
"pass_ticket": "your_pass_ticket",
}
api = WxMPAPI(cookies)
2. 搜索公众号
response = api.fetch_fakeid("Python")
for account in response.arr:
print(f"名称: {account.nickname}")
print(f"FakeID: {account.fakeid}")
3. 使用时间范围爬虫(推荐)
from wxmp.spider import TimeRangeSpider
from wxmp.tools.time_manager import TimeRange
from datetime import datetime
from pathlib import Path
spider = TimeRangeSpider.from_cookies_file("cookies.json")
bizs = spider.load_or_search_bizs(["Python编程"])
time_range = TimeRange(
begin=datetime(2024, 1, 1),
end=datetime(2024, 12, 31)
)
df = spider.search_articles_content(bizs, time_range)
spider.save_all_article_content(
df=df,
save_dir=Path("temp/article_content/"),
time_range=time_range
)
项目结构
wxmp/
├── src/wxmp/ # 源码目录
│ ├── api/ # API 层 - 基础 API 封装
│ │ ├── __init__.py
│ │ ├── common.py # 公共模型和异常
│ │ ├── index.py # WxMPAPI 主类
│ │ ├── token.py # Token 获取
│ │ ├── search_biz.py # 公众号搜索 API
│ │ └── list_ex.py # 文章列表 API
│ ├── spider/ # Spider 层 - 业务逻辑层
│ │ ├── __init__.py
│ │ └── time_range_spider.py # 时间范围爬虫
│ └── tools/ # Tools 层 - 工具层
│ ├── __init__.py
│ ├── article.py # 文章内容处理
│ ├── file.py # 文件操作工具
│ └── time_manager.py # 时间范围缓存管理
├── wiki/ # 项目文档
├── pyproject.toml # 项目配置
└── README.md # 项目说明
文档
详细文档请查看 Wiki:
- 项目概览 - 项目简介、技术栈、架构概览
- 架构设计 - 设计原则、模块设计、缓存策略
- API 文档 - API 层完整文档、数据模型、异常类
- 使用指南 - 快速开始、使用场景、最佳实践
- 数据流动与状态管理 - 数据流转、状态机、缓存策略
- 贡献指南 - 如何贡献代码、开发环境设置
- 常见问题 - 常见问题和解决方案
- CHANGELOG - 版本历史、变更记录
License
MIT License
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file wxmp-2.3.0.tar.gz.
File metadata
- Download URL: wxmp-2.3.0.tar.gz
- Upload date:
- Size: 15.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fdcea42c6f0fd80da795a6740b36273358e652a7e5791684ab7268a96afa753b
|
|
| MD5 |
b928a74e2e1f52e8f3d44d0478316817
|
|
| BLAKE2b-256 |
be1aa1818b87f24a7db860b5a1f914e34783f1d371af263af08daf1ba3943cb3
|
Provenance
The following attestation bundles were made for wxmp-2.3.0.tar.gz:
Publisher:
python-publish.yml on morning-start/wxmp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
wxmp-2.3.0.tar.gz -
Subject digest:
fdcea42c6f0fd80da795a6740b36273358e652a7e5791684ab7268a96afa753b - Sigstore transparency entry: 1009608099
- Sigstore integration time:
-
Permalink:
morning-start/wxmp@befb19bb29752906e84b971c060f3be4d15ce6a9 -
Branch / Tag:
refs/tags/v2.3.0 - Owner: https://github.com/morning-start
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@befb19bb29752906e84b971c060f3be4d15ce6a9 -
Trigger Event:
push
-
Statement type:
File details
Details for the file wxmp-2.3.0-py3-none-any.whl.
File metadata
- Download URL: wxmp-2.3.0-py3-none-any.whl
- Upload date:
- Size: 20.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f2cea0bf35de40ee7493d9ea81f19084378521a5ac6641d7243ba3d319805492
|
|
| MD5 |
1875d6dc5639aa7ce9a6192ce378b082
|
|
| BLAKE2b-256 |
b8d4dc90858bcd5e0e7115eb1706a1981783735cda865fe18dbaec3552ab9637
|
Provenance
The following attestation bundles were made for wxmp-2.3.0-py3-none-any.whl:
Publisher:
python-publish.yml on morning-start/wxmp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
wxmp-2.3.0-py3-none-any.whl -
Subject digest:
f2cea0bf35de40ee7493d9ea81f19084378521a5ac6641d7243ba3d319805492 - Sigstore transparency entry: 1009608103
- Sigstore integration time:
-
Permalink:
morning-start/wxmp@befb19bb29752906e84b971c060f3be4d15ce6a9 -
Branch / Tag:
refs/tags/v2.3.0 - Owner: https://github.com/morning-start
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@befb19bb29752906e84b971c060f3be4d15ce6a9 -
Trigger Event:
push
-
Statement type: