Skip to content

springlethargy/wechat_articles_crawl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

微信公众号文章爬取项目

许可证 Python 版本 代码风格

一个功能完整的微信公众号文章爬取工具,支持自动登录、公众号搜索、文章列表获取、内容下载和数据处理。

功能特性

  • 🔐 自动登录: 支持二维码扫码登录,自动管理会话状态
  • 🔍 智能搜索: 公众号模糊搜索,相似度排序
  • 📊 数据处理: 自动解析文章数据,生成CSV和Markdown文件
  • 📝 内容下载: 批量下载文章内容,支持断点续传
  • 🛡️ 稳定可靠: 完善的错误处理和重试机制
  • 📋 日志记录: 详细的操作日志,便于问题排查
  • 📚 合集管理: 发现、管理和处理特定合集

目录

项目结构

wechat_articles_crawl/
├── src/                    # 源代码目录
│   ├── utils/             # 工具模块
│   │   ├── logger.py      # 日志工具
│   │   └── file_utils.py  # 文件操作工具
│   ├── wechat_login.py    # 微信登录管理
│   ├── account_manager.py # 公众号管理
│   ├── article_crawler.py # 文章爬取
│   ├── data_processor.py  # 数据处理
│   └── config.py          # 配置管理
├── main.py                # 主程序入口
├── config.yaml           # 配置文件
├── requirements.txt       # 依赖文件
└── README.md             # 项目说明

安装说明

环境要求

  • Python 3.7+
  • Chrome 浏览器
  • Windows/Linux/macOS

安装步骤

  1. 克隆项目

    git clone <repository-url>
    cd wechat_articles_crawl
  2. 安装依赖

    python -m venv myenv
    .\myenv\Scripts\activate
    pip install -r requirements.txt
  3. 配置设置 编辑 config.yaml 文件,根据需要调整配置参数。

使用方法

基本运行

在项目根目录下执行:

python main.py

程序将以交互式菜单的形式运行,请根据提示选择要执行的操作。

操作详解

程序提供5个主要操作,请务必理解它们的功能和顺序。

操作1:登录并配置公众号

  • 作用:扫码登录微信公众平台,然后搜索并选择一个要爬取的公众号。
  • 输出:在 ./credential/ 目录生成包含登录凭证和公众号信息的配置文件。
  • 说明:首次使用或更换公众号时必须执行此操作。

操作2:爬取文章列表数据

  • 作用:从微信公众平台获取文章列表的原始JSON数据。
  • 输出:在 ./data/{公众号名}/raw_data/ 目录生成JSON文件。
  • 说明:此操作具备避免重复爬取的功能,但依赖操作3生成的latest_articles.csv文件

操作3:处理文章列表数据 ⭐

  • 作用:解析操作2下载的JSON数据,提取关键信息,生成结构化的CSV文件。
  • 输出
    • ./data/{公众号名}/csv_data/{年月}.csv:按年月分组的文章数据。
    • ./data/{公众号名}/csv_data/latest_articles.csv用于避免重复爬取的关键文件
  • 说明:此步骤是避免重复爬取的核心。CSV文件中“是否爬取”字段默认为“0”。

操作4:下载文章内容

  • 作用:根据CSV文件中的记录,下载文章的Markdown原文。
  • 输出:在 ./data/{公众号名}/md_data/ 目录生成Markdown文件。
  • 筛选逻辑:默认只下载CSV文件中“是否爬取”字段为“0”的文章。

操作5:管理和处理特定合集

  • 作用:发现、查看和处理公众号内的文章合集。
  • 输出:在 ./data/{公众号名}/album_data/ 目录生成合集相关的CSV和Markdown文件,并维护一个album_status.json状态文件。
  • 说明:这是一个独立的增量更新模块,适合针对性地爬取系列文章。

重要:执行顺序与工作原理

正确的操作顺序是保证程序功能正常的关键。

推荐流程

首次使用流程:
操作1 → 操作2 → 操作3 → 操作4/5
  ↓       ↓       ↓         ↓
 配置   爬取全部  生成CSV    按需下载
 公众号  原始数据  +latest文件

后续使用流程:
操作2 → 操作3 → 操作4/5
  ↓       ↓       ↓
智能增量  更新CSV    下载新内容
  爬取   +latest文件

工作原理与关键提示

  • ⚠️ 避免重复爬取的关键操作2的避免重复功能,完全依赖于操作3生成的 latest_articles.csv 文件。
  • ⚠️ 首次必须执行操作3:在首次使用时,必须按 操作2 -> 操作3 的顺序执行一次。此后,操作2才具备了增量爬取(避免重复)的能力。
  • ⚠️ 切勿跳过操作3:如果连续执行两次操作2而中间没有执行操作3,程序会因为没有更新 latest_articles.csv 文件而导致重复爬取所有数据。

注意事项

  1. 合法使用: 请遵守相关法律法规,仅用于学习和研究目的
  2. 频率控制: 程序已内置请求频率控制,请勿修改过于激进
  3. 账号安全: 建议使用专门的测试账号,避免影响主账号
  4. 数据备份: 重要数据请及时备份

常见问题

Q: 登录失败怎么办? A: 检查网络连接,确保能正常访问微信公众平台,清除浏览器缓存后重试。

Q: 爬取速度很慢? A: 可以适当调整 config.yaml 中的 delay 参数,但不建议设置过小。

Q: 程序中断后如何继续? A: 程序支持断点续传,重新运行即可从上次中断的地方继续。

Q: 为什么操作2一直重复爬取相同数据? A: 这是因为还没有执行操作3生成latest_articles.csv文件。操作2的避免重复功能依赖于此文件,请按照正确顺序执行:操作2→操作3→操作2(后续)。

Q: latest_articles.csv文件在哪里生成? A: latest_articles.csv文件在**操作3(处理文章列表数据)**中生成,保存在./data/{公众号名}/csv_data/目录下。此文件记录最新文章信息,用于操作2的避免重复爬取功能。

Q: 可以跳过某个操作吗? A: 不建议跳过操作。正确的执行顺序是:

  • 首次使用:操作1→操作2→操作3→操作4
  • 后续使用:操作2→操作3→操作4 跳过操作可能导致功能异常或数据重复。

Q: 操作4显示"没有需要处理的CSV文件"? A: 请检查:

  1. 是否已执行操作3生成CSV文件
  2. CSV文件中"是否爬取"字段是否为"0"(数字零)
  3. 文件路径是否正确:./data/{公众号名}/csv_data/

开发说明

代码结构

项目采用面向对象设计,主要类包括:

  • WeChatMPLogin: 处理微信登录和会话管理
  • AccountManager: 管理公众号搜索和选择
  • ArticleCrawler: 负责文章内容爬取
  • DataProcessor: 处理数据解析和存储

扩展开发

如需添加新功能,建议:

  1. 在对应的类中添加方法
  2. 更新配置文件支持新参数
  3. 添加相应的日志记录
  4. 更新文档说明

如何贡献

我们非常欢迎任何形式的贡献!无论是报告BUG、提出功能建议还是提交代码。

  1. 如果您发现了问题,请随时在 Issues 中提出。
  2. 如果您想贡献代码,请 Fork 本仓库,创建您的功能分支 (git checkout -b feature/AmazingFeature),然后提交 Pull Request。

感谢所有为本项目做出贡献的人!

许可证

本项目仅供学习和研究使用,请勿用于商业用途。

About

基于python的微信公众号文章爬虫

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages