Home
Login

Eine TypeScript-Bibliothek zur Umwandlung beliebiger Webseiten in strukturierte Daten mithilfe großer Sprachmodelle

MITTypeScript 5.0kmishushakov Last Updated: 2025-05-18

LLM Scraper – Detaillierte Projektbeschreibung

Projektübersicht

LLM Scraper ist eine TypeScript-Bibliothek, die es Ihnen ermöglicht, mithilfe von Large Language Models (LLMs) strukturierte Daten von beliebigen Webseiten zu extrahieren. Das Projekt wurde von mishushakov entwickelt, wird auf GitHub gehostet und stellt eine innovative Lösung für die Extraktion von Webdaten dar.

Kernfunktionen

Hauptfunktionen

  • Multi-LLM-Unterstützung: Unterstützt lokale Modelle (Ollama, GGUF), OpenAI und Vercel AI SDK-Anbieter
  • Typsicherheit: Verwendung von Zod zur Definition von Schemata, vollständige TypeScript-Typsicherheit
  • Basierend auf Playwright: Aufgebaut auf dem leistungsstarken Playwright-Framework
  • Streaming: Unterstützt das Streaming von Objekten
  • Codegenerierung: Neue Codegenerierungsfunktion

Datenformatunterstützung

Das Projekt unterstützt 4 Formatierungsmodi:

  • html - Lädt das ursprüngliche HTML
  • markdown - Lädt das Markdown-Format
  • text - Lädt den extrahierten Text (mit Readability.js)
  • image - Lädt Screenshots (nur Multimodal)

Technische Architektur

Kernprinzip

Im Kern verwendet es Funktionsaufrufe, um Seiten in strukturierte Daten umzuwandeln. Dieser Ansatz nutzt die Verständnisfähigkeit von LLMs, um Webinhalte intelligent zu analysieren und zu extrahieren.

Technologiestack

  • TypeScript - Bietet Typsicherheit und Entwicklungserfahrung
  • Playwright - Webautomatisierung und Inhaltsbeschaffung
  • Zod - Schema-Validierung und Typinferenz
  • AI SDK - Integration verschiedener LLM-Anbieter

Installation und Verwendung

Abhängigkeiten installieren

npm i zod playwright llm-scraper

LLM-Initialisierungsbeispiele

OpenAI

npm i @ai-sdk/openai
import { openai } from '@ai-sdk/openai'
const llm = openai.chat('gpt-4o')

Groq

npm i @ai-sdk/openai
import { createOpenAI } from '@ai-sdk/openai'
const groq = createOpenAI({
  baseURL: 'https://api.groq.com/openai/v1',
  apiKey: process.env.GROQ_API_KEY,
})
const llm = groq('llama3-8b-8192')

Ollama

npm i ollama-ai-provider
import { ollama } from 'ollama-ai-provider'
const llm = ollama('llama3')

GGUF

import { LlamaModel } from 'node-llama-cpp'
const llm = new LlamaModel({
  modelPath: 'model.gguf'
})

Grundlegendes Nutzungsbeispiel

Erstellen einer Scraper-Instanz

import LLMScraper from 'llm-scraper'
const scraper = new LLMScraper(llm)

HackerNews Datenextraktionsbeispiel

import { chromium } from 'playwright'
import { z } from 'zod'
import { openai } from '@ai-sdk/openai'
import LLMScraper from 'llm-scraper'

// Browserinstanz starten
const browser = await chromium.launch()

// LLM-Anbieter initialisieren
const llm = openai.chat('gpt-4o')

// Neuen LLMScraper erstellen
const scraper = new LLMScraper(llm)

// Neue Seite öffnen
const page = await browser.newPage()
await page.goto('https://news.ycombinator.com')

// Schema für die zu extrahierenden Inhalte definieren
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'),
})

// Scraper ausführen
const { data } = await scraper.run(page, schema, {
  format: 'html',
})

// LLM-Ergebnisse anzeigen
console.log(data.top)
await page.close()
await browser.close()

Erweiterte Funktionen

Streaming

Verwenden Sie die stream-Funktion anstelle der run-Funktion, um teilweise Objektströme zu erhalten (nur Vercel AI SDK):

// Scraper im Streaming-Modus ausführen
const { stream } = await scraper.stream(page, schema)

// LLM-Ergebnisse streamen
for await (const data of stream) {
  console.log(data.top)
}

Codegenerierung

Verwenden Sie die generate-Funktion, um wiederverwendbare Playwright-Skripte zu generieren:

// Code generieren und auf der Seite ausführen
const { code } = await scraper.generate(page, schema)
const result = await page.evaluate(code)
const data = schema.parse(result)

// Analyseergebnisse anzeigen
console.log(data.news)

Anwendungsbereiche

Anwendungsgebiete

  • Data Mining: Extraktion strukturierter Informationen von Nachrichten-Websites, Foren usw.
  • Marktforschung: Sammeln von Produktinformationen von Wettbewerbern
  • Content Aggregation: Automatisierte Inhaltssammlung und -organisation
  • Überwachungssysteme: Regelmäßige Überprüfung von Website-Änderungen
  • Forschungsanalyse: Datensammlung für akademische Forschung

Vorteile und Merkmale

  • Intelligente Analyse: Nutzung von LLMs zum Verständnis komplexer Seitenstrukturen
  • Typsicherheit: Vollständige TypeScript-Unterstützung
  • Flexible Konfiguration: Unterstützung verschiedener LLM-Anbieter
  • Einfache Integration: Schlankes API-Design

Zusammenfassung

LLM Scraper ist ein innovatives Tool zur Extraktion von Webdaten, das traditionelle Web-Crawling-Techniken mit modernen KI-Fähigkeiten kombiniert. Durch die Nutzung der Verständnisfähigkeit von Large Language Models kann es strukturierte Daten intelligenter und genauer von komplexen Webseiten extrahieren und bietet so eine völlig neue Lösung für die Datenerfassung und -analyse.