LLM Scraper는 대규모 언어 모델을 사용하여 모든 웹 페이지에서 구조화된 데이터를 추출할 수 있도록 해주는 TypeScript 라이브러리입니다. 이 프로젝트는 mishushakov가 개발했으며 GitHub에 호스팅되어 있으며 혁신적인 웹 데이터 추출 솔루션입니다.
프로젝트는 4가지 형식화 모드를 지원합니다.
html
- 원시 HTML 로드markdown
- markdown 형식 로드text
- 추출된 텍스트 로드 (Readability.js 사용)image
- 스크린샷 로드 (다중 모드만 해당)기본적으로 함수 호출을 사용하여 페이지를 구조화된 데이터로 변환합니다. 이 방법은 대규모 언어 모델의 이해 능력을 활용하여 웹 페이지 콘텐츠를 지능적으로 구문 분석하고 추출합니다.
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'
// 브라우저 인스턴스 시작
const browser = await chromium.launch()
// LLM 제공업체 초기화
const llm = openai.chat('gpt-4o')
// 새로운 LLMScraper 생성
const scraper = new LLMScraper(llm)
// 새 페이지 열기
const page = await browser.newPage()
await page.goto('https://news.ycombinator.com')
// 추출할 콘텐츠의 스키마 정의
const schema = z.object({
top: z
.array(
z.object({
title: z.string(),
points: z.number(),
by: z.string(),
commentsURL: z.string(),
})
)
.length(5)
.describe('Hacker News의 상위 5개 스토리'),
})
// 크롤러 실행
const { data } = await scraper.run(page, schema, {
format: 'html',
})
// LLM 결과 표시
console.log(data.top)
await page.close()
await browser.close()
run
함수 대신 stream
함수를 사용하면 부분 객체 스트림을 얻을 수 있습니다 (Vercel AI SDK만 해당).
// 스트리밍 모드로 크롤러 실행
const { stream } = await scraper.stream(page, schema)
// LLM 결과 스트리밍 전송
for await (const data of stream) {
console.log(data.top)
}
generate
함수를 사용하면 재사용 가능한 Playwright 스크립트를 생성할 수 있습니다.
// 코드 생성 및 페이지에서 실행
const { code } = await scraper.generate(page, schema)
const result = await page.evaluate(code)
const data = schema.parse(result)
// 구문 분석 결과 표시
console.log(data.news)
LLM Scraper는 기존 웹 크롤링 기술과 최신 AI 기능을 결합한 혁신적인 웹 데이터 추출 도구입니다. 대규모 언어 모델의 이해 능력을 활용하여 복잡한 웹 페이지에서 구조화된 데이터를 보다 지능적이고 정확하게 추출하여 데이터 수집 및 분석을 위한 새로운 솔루션을 제공합니다.