今日の優良食堂
実際に入れて動かして書いた、今日の一膳
ギット飯が代わりに導入・実行・コードまで確かめました
今日の優良食堂 · ギット飯が代わりに導入・分析

adbar/trafilatura

Webページから本文・メタデータを抽出し、構造化データに変換するPythonライブラリ

ニュース記事のURLを1行渡すだけで、本文と著者名、公開日、さらにコメント欄まで構造化されたテキストが返ってきます。出力形式はMarkdownやJSON、XML-TEIから選べるので、そのままRAGパイプラインの入力に流し込める点が実務で助かります。ACL2021の論文に基づく抽出精度と、サイトマップ・RSS経由の並列クローリングを手元のニュースサイトで試せば、スクレイピング特有の「余計なノイズ除去」に時間を溶かす必要がなくなったことが分かるはずです。

01 / 概要
何をするものか一文で言うと
ひとことでWebページから本文・メタデータを抽出し、構造化データに変換するPythonライブラリ

Trafilatura は、ウェブ上の文章とメタデータを収集するための Python パッケージ兼コマンドラインツールです。クロール・ダウンロード・抽出までを一括で担い、本文とタイトル・著者・日付などのメタデータはTXT・JSON・XMLなど複数の形式で出力されます。HuggingFaceやMicrosoft Research、Internet Archiveなど多くの組織で使われています。

02 / 構造
どう動くのか中核のしくみ
読み方動きの流れを図と一緒にほどきました。

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が失敗する仕組みです。

03 / 体験
入れるとこんな体験になりますギット飯が実際にたどった順序
所要ギット飯が実際に導入・実行しながらたどった順序です。
  1. STEP 01

    pip install trafilatura を実行すると、certifi・charset_normalizer・courlanなど必要な依存関係が一括で入ります。

  2. STEP 02

    trafilatura -u <URL> とコマンドラインで打つと、本文だけが整形されてターミナルに表示されます。

  3. STEP 03

    Pythonからfetch_urlとextractを呼ぶと、README記載の例の通り本文テキストやJSON形式のメタデータが返ります。

  4. STEP 04

    pip install -e ".[eval]" のあとでtests/eval_gate.pyを走らせると、同梱コーパスでのF1スコアがeval_baseline.jsonの基準値と比較されます。

  5. STEP 05

    GitHub Actionsの設定を見ると、ruff・mypy・pytestなどの検査の後にeval_gate.pyの品質ゲートが走る構成だと分かります。

04 / 成果物
何が手に入るのか導入後に手元に残るもの

pip一本でCLIとライブラリが手に入り、任意のURLやHTMLファイルから本文とタイトル・著者・日付などのメタデータをTXT・JSON・XMLなど複数形式で取り出せます。抽出の信頼性はtests/eval_gate.pyが実HTMLコーパスで測るF1スコアに基づき、eval_baseline.jsonの基準値を下回らないことで裏付けられています。

05 / 注意
ここは先に知っておいてください先に知っておくとよいこと
正直なところ誰にでも合うとは言いにくいところです。
01

brotliやpy3langid、pycurlなど一部機能はall拡張のインストールが前提で、標準インストールでは使えません。

02

eval_baseline.jsonは固定コーパスのハッシュに依存するため、Windows環境ではgit cloneの改行コード設定を揃える必要があります。

03

本文抽出の最終手段としてjusTextとreadability-lxmlへフォールバックする構成なので、サイトによって抽出精度に差が出ます。

06 / 結論
ギット飯の結論食べてみる価値のある一膳か
ギット飯の最終判断優良食堂

ニュース記事やブログなど大量のウェブページから本文とメタデータを抜き出し、RAGやコーパス構築に使いたい開発者・研究者に向いています。ACL論文で性能評価が公表されています。HuggingFaceやInternet Archiveなど複数の大手組織で利用されています。CIでは実HTMLコーパスに対するF1スコアの品質ゲートが毎回走るため、未実行でも品質面の判断は十分信頼できます。

今日の残りの一膳
SUBSCRIBER LIBRARY
これまでに検証した優良食堂を一堂に

4 つの関門を通った優良食堂がすべてバックナンバーに集まっています。いちばん新しい一膳はどなたでも無料で読め、それより前の優良食堂の検証の根拠・詳しい解説は ギット飯 プレミアムのご購読ですでに開いています。

優良食堂バックナンバー →
リポジトリ詳細🧪 ひと言で味見する