1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

次世代AIウェブスクレイピング:llm-scraper & TypeScript 徹底ガイド

Posted at

次世代AIウェブスクレイピング:llm-scraper & TypeScript 徹底ガイド

大規模言語モデルの力でWebデータ抽出を強化!この記事では、llm-scraperとTypeScriptで、動的かつ複雑なWebサイトから柔軟かつ高精度な構造化データを取得する方法をわかりやすく紹介します。実践的ステップ、代替ツール、最新の対応策も含め、SEO/AEO視点で解説します。


llm-scraperとは?

従来の静的パーサでは限界だったWebスクレイピングの世界にAIが革新をもたらします。llm-scraperはその代表的なオープンソースライブラリ。
サイトごとに細かいセレクタやパーサを書くのではなく、「スキーマ」を用意すれば、あとは大規模言語モデル(LLM)がWebページを理解し必要な情報を自動で抽出します。

2024年公開の新しいライブラリですが、GitHubで既に高評価を獲得しています。


llm-scraperがAIスクレイピングで選ばれる理由

イーコマース、求人、ニュースなどページ構造が頻繁に変わるサイトでは、従来のスクレイパーはすぐ壊れがち。
llm-scraperは、LLMがページ文脈を理解し、指定した「タイトル」「価格」「在庫」などを自動対応。
下記の特徴が魅力です。

  • ローカル(Ollama/ GGUFなど)やクラウド(OpenAI, Vercel AI SDK)両対応
  • Zod型スキーマ指定で強力な型安全とバリデーション
  • Playwrightによる自動ブラウザ操作でJS対応
  • ストリーミング保存、コード自動生成、柔軟な抽出対象フォーマット指定

はじめに: 必要な準備

  • Node.js(最新版LTS)
  • TypeScriptの基礎知識・非同期処理に多少慣れていること
  • OpenAIやGroqなどLLMプロバイダーのAPIキー

ステップ1: プロジェクトセットアップ

  1. 作業ディレクトリを作成

    mkdir llm-scraper-demo
    cd llm-scraper-demo
    
  2. Node.js & TypeScript 初期化

    npm init -y
    npm install typescript --save-dev
    npx tsc --init
    
  3. package.json"type": "module" を確認

  4. 必要なライブラリをインストール

    npm install llm-scraper zod playwright
    npx playwright install
    

ステップ2: LLMと環境設定

  1. 取得したAPIキーを .env に記載

    OPENAI_API_KEY=あなたのAPIキー
    
  2. 必要なパッケージをインストール

    npm install @ai-sdk/openai dotenv
    

ステップ3: AIスクレイピングロジックの実装例

scraper.ts を作成:

import { z } from "zod"
import { chromium } from "playwright"
import { openai } from "@ai-sdk/openai"
import LLMScraper from "llm-scraper"
import * as dotenv from "dotenv"
import { promises as fs } from "fs"

dotenv.config()

async function main() {
  const llm = openai.chat("gpt-4o")
  const browser = await chromium.launch()
  const page = await browser.newPage()
  await page.goto("https://books.toscrape.com/catalogue/a-light-in-the-attic_1000/index.html")

  // 取得したいデータの型をZodで指定
  const schema = z.object({
    title: z.string(),
    price: z.string(),
    stock: z.string(),
    quantity: z.string(),
    description: z.string(),
    upc: z.string(),
    productType: z.string(),
    tax: z.string(),
    reviews: z.number()
  })

  const scraper = new LLMScraper(llm)
  const { data } = await scraper.run(page, schema, { format: "markdown" })
  await fs.writeFile("product-llm.json", JSON.stringify(data, null, 2), "utf8")

  await page.close()
  await browser.close()
}

main()

TypeScriptをビルドして実行:

npx tsc
node scraper.js

product-llm.json に構造化データが保存されます!

コード自動生成機能で効率アップ

llm-scraperはスキーマからPlaywright用の抽出コードも自動生成。これによって、従来型スクレイパーの高速テンプレート化や量産化も可能です。

typescript
const { code } = await scraper.generate(page, schema)
// 大量ページのバッチ処理や拡張にも最適

他のLLM型スクレイピングツール(代表例)

llm-scraper以外にも、Python系などLLM対応ライブラリが存在します。

  • Crawl4AI … 高速AIクローリングやデータパイプライン構築向け
  • ScrapeGraphAI … グラフ論理+AIで大規模スクレイピングを簡単に

TypeScript派・Python派どちらも自分の用途に合わせて比較しましょう。


実際の課題とプレミアムな解決策

AIによるスクレイピングでも、CAPTCHAやIPブロックなどで止められてしまうことが多くあります。

プロの対策:
Bright DataのScraping Browserを活用すれば、CAPTCHA突破・IPローテーション・各種アンチボット回避処理までクラウドで自動対応。大規模&安定収集に強みを発揮します。

さらにAgent Browserを使えば、リモートブラウザで無停止・エージェント型の高耐障害スクレイピングも可能です。


まとめ

AIはWebスクレイピングの常識を大きく変えています。
llm-scraperはその最新トレンドの代表例であり、LLM+先進インフラを組み合わせれば、変化の激しいWeb環境でも「安心・自動・高精度」のデータ抽出が誰でも実現できます。

もっとAI×Webデータ活用を加速したい方へ:
Bright Data無料アカウントで今すぐ次世代Webスクレイピングを始めましょう!

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?