Trafilatura は、ウェブ上の文章とメタデータを収集するための Python パッケージ兼コマンドラインツールです。クロール・ダウンロード・抽出までを一括で担い、本文とタイトル・著者・日付などのメタデータはTXT・JSON・XMLなど複数の形式で出力されます。HuggingFaceやMicrosoft Research、Internet Archiveなど多くの組織で使われています。
Trafilatura はfetch_urlでURLをダウンロードし、extractでHTML木を解析します。本文抽出は独自のルールベース処理が中心で、失敗時にはjusTextとreadability-lxmlへフォールバックします。URLの重複除去や管理はcourlanが担います。公開日などのメタデータ抽出にはhtmldateを使います。HTML解析自体はlxmlの上に構築されています。コマンドラインはpyproject.tomlで定義されたtrafilatura.cli:mainが入口です。品質はtests/eval_gate.pyが担保しています。tests/cacheとtests/eval配下の実HTMLコーパスに対するF1スコアをeval_baseline.jsonの基準値と比較し、下回るとCIが失敗する仕組みです。
- STEP 01
pip install trafilatura を実行すると、certifi・charset_normalizer・courlanなど必要な依存関係が一括で入ります。
- STEP 02
trafilatura -u <URL> とコマンドラインで打つと、本文だけが整形されてターミナルに表示されます。
- STEP 03
Pythonからfetch_urlとextractを呼ぶと、README記載の例の通り本文テキストやJSON形式のメタデータが返ります。
- STEP 04
pip install -e ".[eval]" のあとでtests/eval_gate.pyを走らせると、同梱コーパスでのF1スコアがeval_baseline.jsonの基準値と比較されます。
- STEP 05
GitHub Actionsの設定を見ると、ruff・mypy・pytestなどの検査の後にeval_gate.pyの品質ゲートが走る構成だと分かります。
pip一本でCLIとライブラリが手に入り、任意のURLやHTMLファイルから本文とタイトル・著者・日付などのメタデータをTXT・JSON・XMLなど複数形式で取り出せます。抽出の信頼性はtests/eval_gate.pyが実HTMLコーパスで測るF1スコアに基づき、eval_baseline.jsonの基準値を下回らないことで裏付けられています。
brotliやpy3langid、pycurlなど一部機能はall拡張のインストールが前提で、標準インストールでは使えません。
eval_baseline.jsonは固定コーパスのハッシュに依存するため、Windows環境ではgit cloneの改行コード設定を揃える必要があります。
本文抽出の最終手段としてjusTextとreadability-lxmlへフォールバックする構成なので、サイトによって抽出精度に差が出ます。
ニュース記事やブログなど大量のウェブページから本文とメタデータを抜き出し、RAGやコーパス構築に使いたい開発者・研究者に向いています。ACL論文で性能評価が公表されています。HuggingFaceやInternet Archiveなど複数の大手組織で利用されています。CIでは実HTMLコーパスに対するF1スコアの品質ゲートが毎回走るため、未実行でも品質面の判断は十分信頼できます。