見出し画像

Webスクレイピング・本文抽出ツール「Trafilatura」の特徴と使い方

「Trafilatura」は、Web上のテキストを収集・抽出するために設計されたPythonパッケージおよびコマンドラインツールです。Webページからナビゲーションバーや広告などのノイズを除去し、本文を高精度に抽出することに特化しています[1]。

RAGやテキストマイニングの前処理として有用です。

1. Trafilaturaの主な特徴

Trafilaturaは、単なるHTMLダウンロードツールではなく、コンテンツの「意味」を理解して抽出することを目指しています。主な特徴は以下の通りです[1][2]。

  • 本文抽出の精度が高い: ヘッダー、フッター、リンク集などの「繰り返し現れる要素によるノイズ」を排除し、記事の本文だけをきれいに抽出します。

  • メタデータの取得: 本文だけでなく、タイトル、著者、日付、サイト名、カテゴリー、タグなどのメタデータも抽出可能です。

  • 多様な出力フォーマット: TXT、Markdown、CSV、JSON、XMLなど、利用しやすい形式に変換できます。

  • 高速で堅牢: 何百万もの文書処理で実稼働しており、処理速度と安定性が評価されています。ベンチマークでも他のライブラリと比較して優れた性能を示しています。

  • 画像リンクの取得: 本文に関連性の高い画像リンクを抽出する機能もあります。

2. インストール方法

Python環境があれば、pipコマンドで簡単にインストールできます。
基本インストール

$ pip install trafilatura

推奨インストール(高速化・文字コード判定強化)
依存ライブラリを含めてフル機能を利用する場合(高速化やより正確なエンコーディング検出など)は、[all]を指定してインストールすることが推奨されています。

$ pip install -U trafilatura[all]

3. Pythonライブラリとしての使い方

Pythonスクリプト内でモジュールとしてインポートして使用する方法です。

基本的なテキスト抽出

URLからHTMLを取得し、そこからテキストを抽出する基本的な流れは以下の通りです。

from trafilatura import fetch_url, extract

# URLからHTMLを取得
url = "https://example.com/article"
downloaded = fetch_url(url)

# HTMLからメインコンテンツを抽出(テキスト形式)
result = extract(downloaded)
print(result)

フォーマットの指定

output_format引数を指定することで、出力形式を変更できます。
Markdown形式で出力(メタデータ付き)

# メタデータを含めてMarkdownで出力
result = extract(downloaded, output_format="markdown", with_metadata=True)
print(result)

Markdown形式では、太字やリストなどの構造を維持しつつ、記事の冒頭にタイトルや日付などのメタデータを付与することも可能です。

JSON形式で出力

result = extract(downloaded, output_format="json")

JSON形式で出力すると、テキスト、コメント、メタデータなどが構造化されたデータとして取得できます。

画像リンクの取得

include_images=Trueを指定するか、bare_extraction関数を使用することで、本文に関連する画像リンクを取得できます。

import trafilatura

url = "https://example.com"
downloaded = trafilatura.fetch_url(url)
result = trafilatura.bare_extraction(downloaded, include_images=True)
print(result['image']) # 画像URLが表示される

4. CLIとしての使い方

インストールを行うと、ターミナルから直接trafilaturaコマンドを使用できます。

URLを指定して抽出
$ trafilatura -u "https://example.com/article"

Markdown形式で出力
$ trafilatura -u "https://example.com/article" --markdown

ファイルをパイプで渡して処理 既にダウンロード済みのHTMLファイルがある場合、それを渡して処理することも可能です。

$ cat my_article.html | trafilatura

弊社HPにて試した結果を以下に示します。

取得したキャプション例

5. 他ツールとの比較と使い分け

Trafilaturaは、「HTMLから余計なゴミを減らしてきれいに抽出したい」という目的において有用です。類似サービスとしては、FirecrawlやCrawl4AIというサービスがあるようです。向いているユースケースとしては、以下の通りです。

・RAG(検索拡張生成)用のデータセット作成。
・ニュース記事やブログ記事からの本文抽出・分析。
・Webサイトのサムネイル画像候補の取得。

注意点として、画像抽出機能は必ずしも意図した画像が選ばれるとは限らず、本文に最も関係のある画像を1つ取得する挙動となるようです。

総じて、一瞬で精度良い情報が取れるので、利用しやすいと感じました。HPからの情報取得において、最もプリミティブなのはすべての情報をbeautiful soupで取得する方法ですが、それと比較するまでもなく、クリーンな情報が取得できる点で優れています。

参考文献

[1] kun432, zenn, "HTMLを構造化データに変換する「Trafilatura」を試す", 更新日2024/9/25, 閲覧日2026/2/7. 
[2] Handbook編集部,Hakky Hnadbook, "Trafilaturaを使って任意のwebサイトから画像の取得をする方法", 更新日2025/7/6, 閲覧日2026/2/7. 

いいなと思ったら応援しよう!