LLM Scraper est une bibliothèque TypeScript qui vous permet d'extraire des données structurées de n'importe quelle page web en utilisant des grands modèles de langage (LLM). Développé par mishushakov et hébergé sur GitHub, ce projet est une solution innovante pour l'extraction de données web.
Le projet prend en charge 4 modes de formatage :
html
- Charge le HTML brut.markdown
- Charge au format markdown.text
- Charge le texte extrait (en utilisant Readability.js).image
- Charge une capture d'écran (uniquement multimodal).En interne, il utilise des appels de fonction pour convertir une page en données structurées. Cette approche exploite la capacité de compréhension des grands modèles de langage, permettant d'analyser et d'extraire intelligemment le contenu des pages web.
npm i zod playwright llm-scraper
npm i @ai-sdk/openai
import { openai } from '@ai-sdk/openai'
const llm = openai.chat('gpt-4o')
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')
npm i ollama-ai-provider
import { ollama } from 'ollama-ai-provider'
const llm = ollama('llama3')
import { LlamaModel } from 'node-llama-cpp'
const llm = new LlamaModel({
modelPath: 'model.gguf'
})
import LLMScraper from 'llm-scraper'
const scraper = new LLMScraper(llm)
import { chromium } from 'playwright'
import { z } from 'zod'
import { openai } from '@ai-sdk/openai'
import LLMScraper from 'llm-scraper'
// Lancer une instance de navigateur
const browser = await chromium.launch()
// Initialiser le fournisseur LLM
const llm = openai.chat('gpt-4o')
// Créer un nouveau LLMScraper
const scraper = new LLMScraper(llm)
// Ouvrir une nouvelle page
const page = await browser.newPage()
await page.goto('https://news.ycombinator.com')
// Définir le schéma du contenu à extraire
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'),
})
// Exécuter le scraper
const { data } = await scraper.run(page, schema, {
format: 'html',
})
// Afficher les résultats du LLM
console.log(data.top)
await page.close()
await browser.close()
Utiliser la fonction stream
à la place de run
permet d'obtenir un flux d'objets partiels (uniquement pour Vercel AI SDK) :
// Exécuter le scraper en mode flux
const { stream } = await scraper.stream(page, schema)
// Transmettre en flux les résultats du LLM
for await (const data of stream) {
console.log(data.top)
}
Utiliser la fonction generate
permet de générer un script Playwright réutilisable :
// Générer du code et l'exécuter sur la page
const { code } = await scraper.generate(page, schema)
const result = await page.evaluate(code)
const data = schema.parse(result)
// Afficher les résultats de l'analyse
console.log(data.news)
LLM Scraper est un outil innovant d'extraction de données web qui combine les techniques traditionnelles de web scraping avec les capacités modernes de l'IA. En exploitant la capacité de compréhension des grands modèles de langage, il est capable d'extraire des données structurées de manière plus intelligente et plus précise à partir de pages web complexes, offrant ainsi une nouvelle solution pour la collecte et l'analyse de données.