بناء مُجرف ويب متقدم باستخدام BrightData و Gemini من جوجل لاستخراج البيانات بذكاء اصطناعي
هذا البرنامج التعليمي يرشدك خطوة بخطوة لبناء أداة مُجرف ويب مُحسّنة، تستفيد من شبكة وكلاء BrightData القوية بالإضافة إلى واجهة برمجة التطبيقات Gemini من جوجل لاستخراج البيانات بذكاء. ستتعلم كيفية تنظيم مشروع Python الخاص بك، وتثبيت واستيراد المكتبات اللازمة، وتغليف منطق المُجرف داخل فئة BrightDataScraper نظيفة وقابلة لإعادة الاستخدام. سواء كنت تستهدف صفحات منتجات أمازون، أو قوائم الأكثر مبيعًا، أو ملفات تعريف LinkedIn، فإن الأساليب المعيارية للمُجرف تُظهر لك كيفية تهيئة معلمات المُجرف، ومعالجة الأخطاء بشكل أنيق، وإرجاع نتائج JSON مُنسّقة. تُظهر لك أيضًا تكامل اختياري مع وكيل ذكاء اصطناعي على غرار React كيفية دمج الاستدلال المُدار بواسطة نماذج اللغات الكبيرة (LLMs) مع المُجرف في الوقت الفعلي، مما يُمكّنك من طرح استعلامات بلغة طبيعية لتحليل البيانات أثناء التنفيذ.
تثبيت المكتبات اللازمة
سنقوم بتثبيت جميع المكتبات الرئيسية اللازمة للبرنامج التعليمي في خطوة واحدة:
langchain-brightdata
: للمُجرف ويب BrightData.langchain-google-genai
وgoogle-generativeai
: للتكامل مع Gemini من جوجل.langgraph
: لتنسيق عمل الوكيل.langchain-core
: لإطار عمل LangChain الأساسي.
يمكنك تثبيت هذه المكتبات باستخدام الأمر التالي:
pip install langchain-brightdata langchain-google-genai langgraph langchain-core google-generativeai
استيراد المكتبات
نقوم باستيراد المكتبات المُعرفة مسبقاً بهذه الطريقة:
import os
import json
from typing import Dict, Any, Optional
from langchain_brightdata import BrightDataWebScraperAPI
from langchain_google_genai import ChatGoogleGenerativeAI
from langgraph.prebuilt import create_react_agent
فئة BrightDataScraper
هذه الفئة تُغلف كل منطق مُجرف الويب الخاص بـ BrightData، بالإضافة إلى الذكاء المُعتمد على Gemini (اختياري)، تحت واجهة واحدة قابلة لإعادة الاستخدام.
class BrightDataScraper:
""" مُجرف ويب مُحسّن باستخدام واجهة برمجة تطبيقات BrightData """
def __init__(self, api_key: str, google_api_key: Optional[str] = None):
""" تهيئة المُجرف باستخدام مفاتيح واجهة برمجة التطبيقات """
self.api_key = api_key
self.scraper = BrightDataWebScraperAPI(bright_data_api_key=api_key)
if google_api_key:
self.llm = ChatGoogleGenerativeAI(model="gemini-2.0-flash", google_api_key=google_api_key)
self.agent = create_react_agent(self.llm, [self.scraper])
def scrape_amazon_product(self, url: str, zipcode: str = "10001") -> Dict[str, Any]:
""" مُجرف بيانات منتج أمازون """
try:
results = self.scraper.invoke({
"url": url,
"dataset_type": "amazon_product",
"zipcode": zipcode
})
return {"success": True, "data": results}
except Exception as e:
return {"success": False, "error": str(e)}
def scrape_amazon_bestsellers(self, region: str = "in") -> Dict[str, Any]:
""" مُجرف قائمة الأكثر مبيعًا على أمازون """
try:
url = f"https://www.amazon.{region}/gp/bestsellers/"
results = self.scraper.invoke({
"url": url,
"dataset_type": "amazon_product"
})
return {"success": True, "data": results}
except Exception as e:
return {"success": False, "error": str(e)}
def scrape_linkedin_profile(self, url: str) -> Dict[str, Any]:
""" مُجرف بيانات ملف تعريف LinkedIn """
try:
results = self.scraper.invoke({
"url": url,
"dataset_type": "linkedin_person_profile"
})
return {"success": True, "data": results}
except Exception as e:
return {"success": False, "error": str(e)}
def run_agent_query(self, query: str) -> None:
""" تشغيل وكيل الذكاء الاصطناعي باستخدام استعلام بلغة طبيعية """
if not hasattr(self, 'agent'):
print("خطأ: مطلوب مفتاح واجهة برمجة تطبيقات جوجل لوظائف الوكيل")
return
try:
for step in self.agent.stream({"messages": query}, stream_mode="values"):
step["messages"][-1].pretty_print()
except Exception as e:
print(f"خطأ في الوكيل: {e}")
def print_results(self, results: Dict[str, Any], title: str = "النتائج") -> None:
""" طباعة النتائج بشكل مُنسّق """
print(f"n{'=' * 50}")
print(f"{title}")
print(f"{'=' * 50}")
if results["success"]:
print(json.dumps(results["data"], indent=2, ensure_ascii=False))
else:
print(f"خطأ: {results['error']}")
print()
وظيفة التنفيذ الرئيسية (main()
)
def main():
""" وظيفة التنفيذ الرئيسية """
BRIGHT_DATA_API_KEY = "استخدم مفتاح واجهة برمجة التطبيقات الخاص بك"
GOOGLE_API_KEY = "استخدم مفتاح واجهة برمجة تطبيقات جوجل الخاص بك"
scraper = BrightDataScraper(BRIGHT_DATA_API_KEY, GOOGLE_API_KEY)
print(" بدء مُجرف قائمة الأكثر مبيعًا على أمازون الهند...")
bestsellers = scraper.scrape_amazon_bestsellers("in")
scraper.print_results(bestsellers, "قائمة الأكثر مبيعًا على أمازون الهند")
print(" بدء مُجرف منتج أمازون...")
product_url = "https://www.amazon.com/dp/B08L5TNJHG"
product_data = scraper.scrape_amazon_product(product_url, "10001")
scraper.print_results(product_data, "بيانات منتج أمازون")
print(" بدء مُجرف ملف تعريف LinkedIn...")
linkedin_url = "https://www.linkedin.com/in/satyanadella/"
linkedin_data = scraper.scrape_linkedin_profile(linkedin_url)
scraper.print_results(linkedin_data, "بيانات ملف تعريف LinkedIn")
print(" تشغيل استعلام وكيل الذكاء الاصطناعي...")
agent_query = """ مُجرف بيانات منتج أمازون لـ https://www.amazon.com/dp/B0D2Q9397Y?th=1 في نيويورك (الرمز البريدي 10001) ولخص تفاصيل المنتج الرئيسية. """
scraper.run_agent_query(agent_query)
if __name__ == "__main__":
print("جاري تثبيت الحزم المطلوبة...")
os.system("pip install -q langchain-brightdata langchain-google-genai langgraph")
os.environ["BRIGHT_DATA_API_KEY"] = "استخدم مفتاح واجهة برمجة التطبيقات الخاص بك"
main()
الخاتمة
في نهاية هذا البرنامج التعليمي، سيكون لديك برنامج Python جاهز للاستخدام يُؤتمت مهام جمع البيانات المملة، ويُخفي تفاصيل واجهة برمجة التطبيقات منخفضة المستوى، ويستخدم الذكاء الاصطناعي التوليدي (اختياري) لمعالجة الاستعلامات المتقدمة. يمكنك توسيع هذا الأساس عن طريق إضافة دعم لأنواع مجموعات بيانات أخرى، أو دمج نماذج لغات كبيرة إضافية، أو نشر المُجرف كجزء من خط أنابيب بيانات أكبر أو خدمة ويب. باستخدام هذه اللبنات الأساسية، ستكون الآن مُجهزًا لجمع وتحليل وعرض بيانات الويب بكفاءة أكبر، سواء لأبحاث السوق، أو الاستخبارات التنافسية، أو التطبيقات المُخصصة المُدارة بالذكاء الاصطناعي.
اترك تعليقاً