WeChat 公众号記事データ取得システム(wechat-pcspider)

Tool

概要

(リポジトリの概要を300字程度で説明)

wechat-pcspider は、微信公众号(WeChat Official Accounts)の記事コンテンツを自動で取得し、記事HTML・統計データ(阅读量、点赞量、分享量、评论量)・コメント(留言)を抽出して保存・提供するシステムです。ダウンロードしたHTMLは記事のスタイルを保つためにCSSを自動でインライン化し、選択されたコメントを記事HTMLに注入する機能を持ちます。認証パラメータは自動的に捕捉し、PostgreSQL を用いたキャッシュ層により重複取得を避ける「スマートな増分取得」や日付レンジ指定でのバッチ取得が可能。RESTful API を通じて外部からのリクエストに対応します。

GitHub

リポジトリの統計情報

  • スター数: 1
  • フォーク数: 1
  • ウォッチャー数: 1
  • コミット数: 2
  • ファイル数: 41
  • メインの言語: HTML

主な特徴

  • 完全HTMLダウンロード:記事のスタイルを保持したままHTMLを取得し、CSSをインライン化して自己完結型の保存が可能
  • 統計データ抽出:閲読数・いいね・シェア・コメント数などのメタデータをHTMLから抽出
  • 留言(コメント)収集:コメントを自動取得して注入し、記事単位での表示をサポート
  • 自動パラメータ捕捉&キャッシュ:WeChatの認証パラメータを自動で検出し、PostgreSQLでキャッシュして効率化

技術的なポイント

このプロジェクトは実務でのWeChat記事収集に耐えうる機能セットを備えています。まずHTML取得では、通常の単純なスクレイピングとは異なり、記事が依存する外部CSSやiframe等のスタイルをページ内に内包(インライン化)することで、取得したHTML単体で元記事の見た目を再現できます。これによりアーカイブ用途や外部システムへの埋め込みが容易になります。

統計データ抽出は、記事HTML内に埋め込まれたメタ情報やJavaScript変数、あるいは関連APIの応答から閲読数や点赞数などを解析して取り出す設計です。留言区の取得では、通常の静的HTMLに含まれないコメントを別エンドポイントや動的APIから取得して、選別(たとえば得票順やキーワードベース)したコメントを元HTMLに注入するワークフローを持ちます。

運用面では、WeChat側の認証やリクエストヘッダに依存するパラメータ(トークンや署名など)を自動で捕捉するモジュールがあり、手動設定の手間を省けます。データベース層にはPostgreSQLを採用し、記事とパラメータのキャッシュを保持することで「重複取得の防止」「差分のみの増分取得」「日付範囲によるバッチ取得」が可能です。これらは定期実行(スケジューラ)やAPI経由のオンデマンド実行と組み合わせて効率的な運用を実現します。

また、外部連携用のRESTful APIを提供しているため、取得した記事やメタデータを他サービスへ配信するのが容易です。実運用ではWeChat側のレート制限やボット対策、認証期限切れへの対応が課題となるため、リトライ・バックオフ・プロキシ/IPローテーション、ヘッダの適切な模倣などの対策を組み込むことが推奨されます。ログと監視、データ整合性(重複や欠損の検出)も重要な観点です。

プロジェクトの構成

主要なファイルとディレクトリ:

  • .gitignore: file
  • API_DOCUMENTATION.md: file
  • LICENSE: file
  • PROJECT_DOCUMENTATION.md: file
  • README.md: file

…他 36 ファイル

まとめ

実用的なWeChat記事取得とキャッシュ・API提供を一貫して行えるツールで、アーカイブや分析パイプラインに適する。

リポジトリ情報:

READMEの抜粋:

微信公众号文章数据获取系统

一个功能完整的微信公众号文章数据获取系统,支持自动化获取文章内容、统计数据(阅读量、点赞量、分享量、评论量)和留言区内容。

核心功能

  • 完整HTML下载:下载包含完整样式的文章HTML,自动内联CSS
  • 统计数据提取:从HTML中提取阅读量、点赞量、分享量、评论量
  • 留言区获取:自动获取并注入精选留言到HTML
  • 参数自动捕获:自动捕获微信认证参数,无需手动配置
  • 数据库缓存:使用PostgreSQL数据库缓存文章和参数
  • 批量获取:支持按日期范围批量获取文章
  • 智能增量:自动检测已有数据,只获取缺失部分
  • RESTful API:提供完整的HTTP API接口

系统架构

┌─────────────────┐
│   API 客户端    │
└────────┬────────┘
         │ HTTP Request

┌─────────────────┐
│  API Serv...