LLM Scraper عبارة عن مكتبة TypeScript تتيح لك استخراج بيانات منظمة من أي صفحة ويب باستخدام نماذج لغوية كبيرة (LLM). تم تطوير هذا المشروع بواسطة 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('Top 5 stories on Hacker News'),
})
// تشغيل المكشطة
const { data } = await scraper.run(page, schema, {
format: 'html',
})
// عرض نتائج LLM
console.log(data.top)
await page.close()
await browser.close()
استخدام الدالة stream
بدلاً من الدالة run
للحصول على تدفق جزئي للكائنات (فقط لـ 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 هو أداة مبتكرة لاستخراج بيانات الويب تجمع بين تقنيات الزحف التقليدية على الويب وقدرات الذكاء الاصطناعي الحديثة. من خلال الاستفادة من قدرة الفهم لدى النماذج اللغوية الكبيرة، يمكنها استخراج بيانات منظمة من صفحات الويب المعقدة بذكاء ودقة أكبر، مما يوفر حلاً جديدًا لجمع البيانات وتحليلها.