Home
Login

مكتبة TypeScript تستخدم نماذج لغوية كبيرة لتحويل أي صفحة ويب إلى بيانات منظمة

MITTypeScript 5.0kmishushakov Last Updated: 2025-05-18

LLM Scraper: وصف تفصيلي للمشروع

نظرة عامة على المشروع

LLM Scraper عبارة عن مكتبة TypeScript تتيح لك استخراج بيانات منظمة من أي صفحة ويب باستخدام نماذج لغوية كبيرة (LLM). تم تطوير هذا المشروع بواسطة mishushakov، ويستضاف على GitHub، وهو حل مبتكر لاستخراج بيانات الويب.

الميزات الأساسية

الوظائف الرئيسية

  • دعم نماذج لغوية كبيرة متعددة: يدعم النماذج المحلية (Ollama، GGUF)، و OpenAI، وموفري Vercel AI SDK.
  • أمان الأنواع: استخدام Zod لتحديد الأنماط، وأمان كامل للأنواع في TypeScript.
  • يعتمد على Playwright: مبني على إطار Playwright القوي.
  • معالجة التدفق: يدعم تدفق الكائنات.
  • إنشاء التعليمات البرمجية: وظيفة جديدة لإنشاء التعليمات البرمجية.

دعم تنسيقات البيانات

يدعم المشروع 4 أوضاع تنسيق:

  • html - تحميل HTML الأصلي.
  • markdown - تحميل بتنسيق markdown.
  • text - تحميل النص المستخرج (باستخدام Readability.js).
  • image - تحميل لقطة شاشة (لنماذج متعددة الوسائط فقط).

البنية التقنية

المبدأ الأساسي

في الأساس، يستخدم استدعاءات الوظائف لتحويل الصفحة إلى بيانات منظمة. تستفيد هذه الطريقة من قدرة الفهم لدى النماذج اللغوية الكبيرة، مما يتيح تحليل واستخراج محتوى الويب بذكاء.

حزمة التقنيات

  • TypeScript - يوفر أمان الأنواع وتجربة تطوير جيدة.
  • Playwright - أتمتة الويب والحصول على المحتوى.
  • Zod - التحقق من صحة الأنماط والاستدلال على الأنواع.
  • AI SDK - تكامل مع العديد من موفري النماذج اللغوية الكبيرة.

التثبيت والاستخدام

تثبيت التبعيات

npm i zod playwright llm-scraper

مثال على تهيئة LLM

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'
})

مثال على الاستخدام الأساسي

إنشاء مثيل للمكشطة

import LLMScraper from 'llm-scraper'
const scraper = new LLMScraper(llm)

مثال على استخراج بيانات HackerNews

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 لفهم هياكل الصفحات المعقدة.
  • أمان الأنواع: دعم كامل لـ TypeScript.
  • تكوين مرن: يدعم العديد من موفري LLM.
  • سهولة التكامل: تصميم API بسيط.

ملخص

LLM Scraper هو أداة مبتكرة لاستخراج بيانات الويب تجمع بين تقنيات الزحف التقليدية على الويب وقدرات الذكاء الاصطناعي الحديثة. من خلال الاستفادة من قدرة الفهم لدى النماذج اللغوية الكبيرة، يمكنها استخراج بيانات منظمة من صفحات الويب المعقدة بذكاء ودقة أكبر، مما يوفر حلاً جديدًا لجمع البيانات وتحليلها.