Eine TypeScript-Bibliothek zur Umwandlung beliebiger Webseiten in strukturierte Daten mithilfe großer Sprachmodelle
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 HTMLmarkdown
- Lädt das Markdown-Formattext
- 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.