LLM Scraper é uma biblioteca TypeScript que permite extrair dados estruturados de qualquer página web usando modelos de linguagem grandes (LLMs). Desenvolvido por mishushakov e hospedado no GitHub, este projeto é uma solução inovadora para extração de dados web.
O projeto suporta 4 modos de formatação:
html
- Carrega o HTML originalmarkdown
- Carrega em formato markdowntext
- Carrega o texto extraído (usando Readability.js)image
- Carrega uma captura de tela (apenas multimodal)Na sua essência, utiliza chamadas de função para transformar páginas em dados estruturados. Esta abordagem aproveita a capacidade de compreensão dos modelos de linguagem grandes, permitindo analisar e extrair conteúdo web de forma inteligente.
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'
// Iniciar instância do navegador
const browser = await chromium.launch()
// Inicializar provedor LLM
const llm = openai.chat('gpt-4o')
// Criar novo LLMScraper
const scraper = new LLMScraper(llm)
// Abrir nova página
const page = await browser.newPage()
await page.goto('https://news.ycombinator.com')
// Definir esquema para o conteúdo a ser extraído
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'),
})
// Executar o scraper
const { data } = await scraper.run(page, schema, {
format: 'html',
})
// Exibir resultados do LLM
console.log(data.top)
await page.close()
await browser.close()
Usar a função stream
em vez de run
permite obter um stream de objetos parciais (apenas para Vercel AI SDK):
// Executar o scraper em modo stream
const { stream } = await scraper.stream(page, schema)
// Transmitir resultados do LLM em stream
for await (const data of stream) {
console.log(data.top)
}
Usar a função generate
permite gerar scripts Playwright reutilizáveis:
// Gerar código e executar na página
const { code } = await scraper.generate(page, schema)
const result = await page.evaluate(code)
const data = schema.parse(result)
// Exibir resultados da análise
console.log(data.news)
LLM Scraper é uma ferramenta inovadora de extração de dados web que combina técnicas tradicionais de web scraping com capacidades modernas de IA. Ao aproveitar a capacidade de compreensão dos modelos de linguagem grandes, ele pode extrair dados estruturados de páginas web complexas de forma mais inteligente e precisa, fornecendo uma nova solução para coleta e análise de dados.