LLMスクレイパー:ウェブページを構造化データに変換
webスクレイピングにLLMの力を解き放つ – LLM Scraper
Web開発やデータ分析が目まぐるしく進化する現代において、インターネット上に溢れる膨大な情報から構造化されたデータを効率的に抽出することは、共通の課題となっています。そこで登場するのが、Webページからのデータ収集方法に革命をもたらす最先端のオープンソースプロジェクト「LLM Scraper」です。LLM Scraperは、TypeScriptで開発され、堅牢なPlaywrightフレームワークを基盤としており、大規模言語モデル(LLM)の能力を活用して、あらゆるWebページを構造化された、利用可能なデータに変換します。
LLM Scraperとは?
LLM Scraperは、Webコンテンツからのデータ抽出プロセスを簡素化するために設計された、汎用的なTypeScriptライブラリです。LLMの関数呼び出し機能を通じて、定義されたスキーマに基づき、情報を解釈・構造化します。前処理されたHTML、生のHTML、Markdown、さらにはマルチモーダルLLMを介したスクリーンショットからのビジュアルデータまで、LLM Scraperなら対応可能です。
主な機能とメリット
LLM Scraperは、幅広いユースケースに対応する、印象的な機能セットを備えています。
- 幅広いLLMサポート: GPT(OpenAI)、Sonnet(Anthropic)、Gemini(Google)、Llama(Meta)、Qwenなど、主要なLLMプロバイダーと連携できます。
- 柔軟なスキーマ定義: ZodまたはJSON Schemaを使用してデータ構造を定義し、抽出データの堅牢な型安全性を確保します。
- Playwright基盤: エンドツーエンドテストや自動化のための強力なツールであるPlaywrightを基盤としており、信頼性の高いブラウザ操作を実現します。
- 複数のフォーマットモード:
html
、raw_html
、markdown
、text
(Readability.js経由)、image
(マルチモーダルLLM用)のフォーマットをサポートし、多様なデータ入力を可能にします。 - ストリーミングオブジェクト: 処理されたデータを段階的に取得でき、大規模データセットやリアルタイムアプリケーションに便利です。
- コード生成: 定義したスキーマに基づいて再利用可能なPlaywrightスクリプトを生成できるユニークな機能で、定型作業を効率化します。
LLM Scraperの始め方
LLM Scraperでのデータ抽出の旅は、以下の手順で簡単に始められます。
-
依存関係のインストール:
npm i zod playwright llm-scraper
-
LLMの初期化: 好みのLLMプロバイダーを選択し、セットアップします。OpenAI、Anthropic、Google、Groq、Ollamaの例が提供されています。
- OpenAIの例:
import { openai } from '@ai-sdk/openai' const llm = openai.chat('gpt-4o')
- OpenAIの例:
-
LLMScraperインスタンスの作成: 選択したLLMでスクレイパーをインスタンス化します。
import LLMScraper from 'llm-scraper' const scraper = new LLMScraper(llm)
-
スクレイパーの実行: Zodを使用して目的のスキーマを定義し、Playwrightページでスクレイパーを実行します。
import { chromium } from 'playwright' import { z } from 'zod' import { openai } from '@ai-sdk/openai' import LLMScraper from 'llm-scraper' const browser = await chromium.launch() const llm = openai.chat('gpt-4o') const scraper = new LLMScraper(llm) const page = await browser.newPage() await page.goto('https://news.ycombinator.com') const schema = z.object({ top: z.array(z.object({ title: z.string(), points: z.number(), by: z.string(), commentsURL: z.string(), })).length(5).describe('Top 5 stories on Hacker News'), }) const { data } = await scraper.run(page, schema, { format: 'html' }) console.log(data.top) await page.close() await browser.close()
リアルタイムでのデータ処理を好む方のために、stream
関数を使用すると、データの段階的な取得が可能です。
LLM Scraperへの貢献
LLM Scraperは、コミュニティ主導のプロジェクトです。開発者は、GitHubのIssueやPull Requestを通じた貢献、バグレポート、機能リクエストを歓迎しており、真に協力的なオープンソースの取り組みとなっています。
その高度な機能とユーザーフレンドリーな設計により、LLM Scraperは、AIの力を活用してWebから価値ある構造化データを効率的に抽出したい開発者、研究者、そしてあらゆる人々にとって、貴重なツールとなるでしょう。