mirror of
https://github.com/crewAIInc/crewAI.git
synced 2026-05-01 07:13:00 +00:00
docs: add modern standard arabic translation of all documentation
This commit is contained in:
112
docs/ar/tools/web-scraping/brightdata-tools.mdx
Normal file
112
docs/ar/tools/web-scraping/brightdata-tools.mdx
Normal file
@@ -0,0 +1,112 @@
|
||||
---
|
||||
title: أدوات Bright Data
|
||||
description: تكاملات Bright Data للبحث في SERP واستخراج البيانات عبر Web Unlocker وDataset API.
|
||||
icon: spider
|
||||
mode: "wide"
|
||||
---
|
||||
|
||||
# أدوات Bright Data
|
||||
|
||||
هذه المجموعة من الأدوات تدمج خدمات Bright Data لاستخراج البيانات من الويب.
|
||||
|
||||
## التثبيت
|
||||
|
||||
```shell
|
||||
uv add crewai-tools requests aiohttp
|
||||
```
|
||||
|
||||
## متغيرات البيئة
|
||||
|
||||
- `BRIGHT_DATA_API_KEY` (مطلوب)
|
||||
- `BRIGHT_DATA_ZONE` (لـ SERP/Web Unlocker)
|
||||
|
||||
أنشئ بيانات الاعتماد على https://brightdata.com/ (سجّل، ثم أنشئ رمز API ومنطقة).
|
||||
راجع التوثيق: https://developers.brightdata.com/
|
||||
|
||||
## الأدوات المضمنة
|
||||
|
||||
- `BrightDataSearchTool`: بحث SERP (Google/Bing/Yandex) مع خيارات الموقع الجغرافي واللغة والجهاز.
|
||||
- `BrightDataWebUnlockerTool`: استخراج الصفحات مع تجاوز مكافحة الروبوتات والتصيير.
|
||||
- `BrightDataDatasetTool`: تشغيل مهام Dataset API وجلب النتائج.
|
||||
|
||||
## أمثلة
|
||||
|
||||
### بحث SERP
|
||||
|
||||
```python Code
|
||||
from crewai_tools import BrightDataSearchTool
|
||||
|
||||
tool = BrightDataSearchTool(
|
||||
query="CrewAI",
|
||||
country="us",
|
||||
)
|
||||
|
||||
print(tool.run())
|
||||
```
|
||||
|
||||
### Web Unlocker
|
||||
|
||||
```python Code
|
||||
from crewai_tools import BrightDataWebUnlockerTool
|
||||
|
||||
tool = BrightDataWebUnlockerTool(
|
||||
url="https://example.com",
|
||||
format="markdown",
|
||||
)
|
||||
|
||||
print(tool.run(url="https://example.com"))
|
||||
```
|
||||
|
||||
### Dataset API
|
||||
|
||||
```python Code
|
||||
from crewai_tools import BrightDataDatasetTool
|
||||
|
||||
tool = BrightDataDatasetTool(
|
||||
dataset_type="ecommerce",
|
||||
url="https://example.com/product",
|
||||
)
|
||||
|
||||
print(tool.run())
|
||||
```
|
||||
|
||||
## استكشاف الأخطاء وإصلاحها
|
||||
|
||||
- 401/403: تحقق من `BRIGHT_DATA_API_KEY` و `BRIGHT_DATA_ZONE`.
|
||||
- محتوى فارغ/محظور: فعّل التصيير أو جرّب منطقة مختلفة.
|
||||
|
||||
## مثال
|
||||
|
||||
```python Code
|
||||
from crewai import Agent, Task, Crew
|
||||
from crewai_tools import BrightDataSearchTool
|
||||
|
||||
tool = BrightDataSearchTool(
|
||||
query="CrewAI",
|
||||
country="us",
|
||||
)
|
||||
|
||||
agent = Agent(
|
||||
role="Web Researcher",
|
||||
goal="Search with Bright Data",
|
||||
backstory="Finds reliable results",
|
||||
tools=[tool],
|
||||
verbose=True,
|
||||
)
|
||||
|
||||
task = Task(
|
||||
description="Search for CrewAI and summarize top results",
|
||||
expected_output="Short summary with links",
|
||||
agent=agent,
|
||||
)
|
||||
|
||||
crew = Crew(
|
||||
agents=[agent],
|
||||
tasks=[task],
|
||||
verbose=True,
|
||||
)
|
||||
|
||||
result = crew.kickoff()
|
||||
```
|
||||
|
||||
|
||||
51
docs/ar/tools/web-scraping/browserbaseloadtool.mdx
Normal file
51
docs/ar/tools/web-scraping/browserbaseloadtool.mdx
Normal file
@@ -0,0 +1,51 @@
|
||||
---
|
||||
title: أداة تحميل Browserbase
|
||||
description: Browserbase هي منصة للمطورين لتشغيل وإدارة ومراقبة المتصفحات بدون واجهة بشكل موثوق.
|
||||
icon: browser
|
||||
mode: "wide"
|
||||
---
|
||||
|
||||
# `BrowserbaseLoadTool`
|
||||
|
||||
## الوصف
|
||||
|
||||
[Browserbase](https://browserbase.com) هي منصة للمطورين لتشغيل وإدارة ومراقبة المتصفحات بدون واجهة بشكل موثوق.
|
||||
|
||||
عزّز عمليات استرجاع بيانات الذكاء الاصطناعي الخاصة بك بـ:
|
||||
|
||||
- [بنية تحتية بدون خادم](https://docs.browserbase.com/under-the-hood) توفر متصفحات موثوقة لاستخراج البيانات من واجهات المستخدم المعقدة
|
||||
- [وضع التخفي](https://docs.browserbase.com/features/stealth-mode) مع تكتيكات البصمة المضمنة وحل CAPTCHA التلقائي
|
||||
- [مصحح الجلسات](https://docs.browserbase.com/features/sessions) لفحص جلسة المتصفح مع الجدول الزمني للشبكة والسجلات
|
||||
- [التصحيح المباشر](https://docs.browserbase.com/guides/session-debug-connection/browser-remote-control) لتصحيح الأتمتة بسرعة
|
||||
|
||||
## التثبيت
|
||||
|
||||
- احصل على مفتاح API ومعرّف المشروع من [browserbase.com](https://browserbase.com) وعيّنهما في متغيرات البيئة (`BROWSERBASE_API_KEY`، `BROWSERBASE_PROJECT_ID`).
|
||||
- ثبّت [Browserbase SDK](http://github.com/browserbase/python-sdk) مع حزمة `crewai[tools]`:
|
||||
|
||||
```shell
|
||||
pip install browserbase 'crewai[tools]'
|
||||
```
|
||||
|
||||
## مثال
|
||||
|
||||
استخدم BrowserbaseLoadTool كما يلي للسماح لوكيلك بتحميل المواقع:
|
||||
|
||||
```python Code
|
||||
from crewai_tools import BrowserbaseLoadTool
|
||||
|
||||
# Initialize the tool with the Browserbase API key and Project ID
|
||||
tool = BrowserbaseLoadTool()
|
||||
```
|
||||
|
||||
## المعاملات
|
||||
|
||||
يمكن استخدام المعاملات التالية لتخصيص سلوك `BrowserbaseLoadTool`:
|
||||
|
||||
| المعامل | النوع | الوصف |
|
||||
|:---------------|:---------|:-------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| **api_key** | `string` | _اختياري_. مفتاح Browserbase API. الافتراضي هو متغير البيئة `BROWSERBASE_API_KEY`. |
|
||||
| **project_id** | `string` | _اختياري_. معرّف مشروع Browserbase. الافتراضي هو متغير البيئة `BROWSERBASE_PROJECT_ID`. |
|
||||
| **text_content** | `bool` | _اختياري_. استرجاع المحتوى النصي فقط. الافتراضي هو `False`. |
|
||||
| **session_id** | `string` | _اختياري_. تقديم معرّف جلسة موجود. |
|
||||
| **proxy** | `bool` | _اختياري_. تفعيل/تعطيل البروكسيات. الافتراضي هو `False`. |
|
||||
48
docs/ar/tools/web-scraping/firecrawlcrawlwebsitetool.mdx
Normal file
48
docs/ar/tools/web-scraping/firecrawlcrawlwebsitetool.mdx
Normal file
@@ -0,0 +1,48 @@
|
||||
---
|
||||
title: زحف المواقع باستخدام Firecrawl
|
||||
description: أداة `FirecrawlCrawlWebsiteTool` مصممة لزحف المواقع وتحويلها إلى markdown نظيف أو بيانات منظمة.
|
||||
icon: fire-flame
|
||||
mode: "wide"
|
||||
---
|
||||
|
||||
# `FirecrawlCrawlWebsiteTool`
|
||||
|
||||
## الوصف
|
||||
|
||||
[Firecrawl](https://firecrawl.dev) هي منصة لزحف وتحويل أي موقع إلى markdown نظيف أو بيانات منظمة.
|
||||
|
||||
## التثبيت
|
||||
|
||||
- احصل على مفتاح API من [firecrawl.dev](https://firecrawl.dev) وعيّنه في متغيرات البيئة (`FIRECRAWL_API_KEY`).
|
||||
- ثبّت [Firecrawl SDK](https://github.com/mendableai/firecrawl) مع حزمة `crewai[tools]`:
|
||||
|
||||
```shell
|
||||
pip install firecrawl-py 'crewai[tools]'
|
||||
```
|
||||
|
||||
## مثال
|
||||
|
||||
استخدم FirecrawlScrapeFromWebsiteTool كما يلي للسماح لوكيلك بتحميل المواقع:
|
||||
|
||||
```python Code
|
||||
from crewai_tools import FirecrawlCrawlWebsiteTool
|
||||
|
||||
tool = FirecrawlCrawlWebsiteTool(url='firecrawl.dev')
|
||||
```
|
||||
|
||||
## المعاملات
|
||||
|
||||
- `api_key`: اختياري. يحدد مفتاح Firecrawl API. الافتراضي هو متغير البيئة `FIRECRAWL_API_KEY`.
|
||||
- `url`: عنوان URL الأساسي لبدء الزحف منه.
|
||||
- `page_options`: اختياري.
|
||||
- `onlyMainContent`: اختياري. إرجاع المحتوى الرئيسي فقط للصفحة باستثناء الرؤوس وأشرطة التنقل والتذييلات وغيرها.
|
||||
- `includeHtml`: اختياري. تضمين محتوى HTML الخام للصفحة. سيُخرج مفتاح html في الاستجابة.
|
||||
- `crawler_options`: اختياري. خيارات للتحكم في سلوك الزحف.
|
||||
- `includes`: اختياري. أنماط URL لتضمينها في الزحف.
|
||||
- `exclude`: اختياري. أنماط URL لاستبعادها من الزحف.
|
||||
- `generateImgAltText`: اختياري. توليد نص بديل للصور باستخدام LLMs (يتطلب خطة مدفوعة).
|
||||
- `returnOnlyUrls`: اختياري. إذا كان true، يُرجع عناوين URL فقط كقائمة في حالة الزحف. ملاحظة: ستكون الاستجابة قائمة عناوين URL داخل البيانات، وليست قائمة مستندات.
|
||||
- `maxDepth`: اختياري. الحد الأقصى لعمق الزحف. العمق 1 هو عنوان URL الأساسي، والعمق 2 يشمل عنوان URL الأساسي وأبنائه المباشرين، وهكذا.
|
||||
- `mode`: اختياري. وضع الزحف المستخدم. الوضع السريع يزحف أسرع 4 مرات على المواقع بدون خريطة موقع ولكنه قد لا يكون دقيقاً ولا يجب استخدامه على المواقع التي تعتمد بشكل كبير على JavaScript.
|
||||
- `limit`: اختياري. الحد الأقصى لعدد الصفحات للزحف.
|
||||
- `timeout`: اختياري. المهلة بالملي ثانية لعملية الزحف.
|
||||
44
docs/ar/tools/web-scraping/firecrawlscrapewebsitetool.mdx
Normal file
44
docs/ar/tools/web-scraping/firecrawlscrapewebsitetool.mdx
Normal file
@@ -0,0 +1,44 @@
|
||||
---
|
||||
title: استخراج المواقع باستخدام Firecrawl
|
||||
description: أداة `FirecrawlScrapeWebsiteTool` مصممة لاستخراج المواقع وتحويلها إلى markdown نظيف أو بيانات منظمة.
|
||||
icon: fire-flame
|
||||
mode: "wide"
|
||||
---
|
||||
|
||||
# `FirecrawlScrapeWebsiteTool`
|
||||
|
||||
## الوصف
|
||||
|
||||
[Firecrawl](https://firecrawl.dev) هي منصة لزحف وتحويل أي موقع إلى markdown نظيف أو بيانات منظمة.
|
||||
|
||||
## التثبيت
|
||||
|
||||
- احصل على مفتاح API من [firecrawl.dev](https://firecrawl.dev) وعيّنه في متغيرات البيئة (`FIRECRAWL_API_KEY`).
|
||||
- ثبّت [Firecrawl SDK](https://github.com/mendableai/firecrawl) مع حزمة `crewai[tools]`:
|
||||
|
||||
```shell
|
||||
pip install firecrawl-py 'crewai[tools]'
|
||||
```
|
||||
|
||||
## مثال
|
||||
|
||||
استخدم FirecrawlScrapeWebsiteTool كما يلي للسماح لوكيلك بتحميل المواقع:
|
||||
|
||||
```python Code
|
||||
from crewai_tools import FirecrawlScrapeWebsiteTool
|
||||
|
||||
tool = FirecrawlScrapeWebsiteTool(url='firecrawl.dev')
|
||||
```
|
||||
|
||||
## المعاملات
|
||||
|
||||
- `api_key`: اختياري. يحدد مفتاح Firecrawl API. الافتراضي هو متغير البيئة `FIRECRAWL_API_KEY`.
|
||||
- `url`: عنوان URL المراد استخراجه.
|
||||
- `page_options`: اختياري.
|
||||
- `onlyMainContent`: اختياري. إرجاع المحتوى الرئيسي فقط للصفحة باستثناء الرؤوس وأشرطة التنقل والتذييلات وغيرها.
|
||||
- `includeHtml`: اختياري. تضمين محتوى HTML الخام للصفحة. سيُخرج مفتاح html في الاستجابة.
|
||||
- `extractor_options`: اختياري. خيارات لاستخراج المعلومات المنظمة من محتوى الصفحة باستخدام LLM
|
||||
- `mode`: وضع الاستخراج المستخدم، يدعم حالياً 'llm-extraction'
|
||||
- `extractionPrompt`: اختياري. موجّه يصف المعلومات المراد استخراجها من الصفحة
|
||||
- `extractionSchema`: اختياري. المخطط للبيانات المراد استخراجها
|
||||
- `timeout`: اختياري. المهلة بالملي ثانية للطلب
|
||||
42
docs/ar/tools/web-scraping/firecrawlsearchtool.mdx
Normal file
42
docs/ar/tools/web-scraping/firecrawlsearchtool.mdx
Normal file
@@ -0,0 +1,42 @@
|
||||
---
|
||||
title: بحث Firecrawl
|
||||
description: أداة `FirecrawlSearchTool` مصممة للبحث في المواقع وتحويلها إلى markdown نظيف أو بيانات منظمة.
|
||||
icon: fire-flame
|
||||
mode: "wide"
|
||||
---
|
||||
|
||||
# `FirecrawlSearchTool`
|
||||
|
||||
## الوصف
|
||||
|
||||
[Firecrawl](https://firecrawl.dev) هي منصة لزحف وتحويل أي موقع إلى markdown نظيف أو بيانات منظمة.
|
||||
|
||||
## التثبيت
|
||||
|
||||
- احصل على مفتاح API من [firecrawl.dev](https://firecrawl.dev) وعيّنه في متغيرات البيئة (`FIRECRAWL_API_KEY`).
|
||||
- ثبّت [Firecrawl SDK](https://github.com/mendableai/firecrawl) مع حزمة `crewai[tools]`:
|
||||
|
||||
```shell
|
||||
pip install firecrawl-py 'crewai[tools]'
|
||||
```
|
||||
|
||||
## مثال
|
||||
|
||||
استخدم FirecrawlSearchTool كما يلي للسماح لوكيلك بتحميل المواقع:
|
||||
|
||||
```python Code
|
||||
from crewai_tools import FirecrawlSearchTool
|
||||
|
||||
tool = FirecrawlSearchTool(query='what is firecrawl?')
|
||||
```
|
||||
|
||||
## المعاملات
|
||||
|
||||
- `api_key`: اختياري. يحدد مفتاح Firecrawl API. الافتراضي هو متغير البيئة `FIRECRAWL_API_KEY`.
|
||||
- `query`: سلسلة استعلام البحث المستخدمة للبحث.
|
||||
- `page_options`: اختياري. خيارات لتنسيق النتائج.
|
||||
- `onlyMainContent`: اختياري. إرجاع المحتوى الرئيسي فقط للصفحة باستثناء الرؤوس وأشرطة التنقل والتذييلات وغيرها.
|
||||
- `includeHtml`: اختياري. تضمين محتوى HTML الخام للصفحة. سيُخرج مفتاح html في الاستجابة.
|
||||
- `fetchPageContent`: اختياري. جلب المحتوى الكامل للصفحة.
|
||||
- `search_options`: اختياري. خيارات للتحكم في سلوك الزحف.
|
||||
- `limit`: اختياري. الحد الأقصى لعدد الصفحات للزحف.
|
||||
87
docs/ar/tools/web-scraping/hyperbrowserloadtool.mdx
Normal file
87
docs/ar/tools/web-scraping/hyperbrowserloadtool.mdx
Normal file
@@ -0,0 +1,87 @@
|
||||
---
|
||||
title: أداة تحميل Hyperbrowser
|
||||
description: أداة `HyperbrowserLoadTool` تتيح استخراج البيانات من الويب والزحف باستخدام Hyperbrowser.
|
||||
icon: globe
|
||||
mode: "wide"
|
||||
---
|
||||
|
||||
# `HyperbrowserLoadTool`
|
||||
|
||||
## الوصف
|
||||
|
||||
تتيح أداة `HyperbrowserLoadTool` استخراج البيانات من الويب والزحف باستخدام [Hyperbrowser](https://hyperbrowser.ai)، وهي منصة لتشغيل وتوسيع المتصفحات بدون واجهة. تسمح لك هذه الأداة باستخراج صفحة واحدة أو زحف موقع كامل، مع إرجاع المحتوى بتنسيق markdown أو HTML منسّق بشكل صحيح.
|
||||
|
||||
الميزات الرئيسية:
|
||||
- قابلية توسع فورية - تشغيل مئات جلسات المتصفح في ثوانٍ دون متاعب البنية التحتية
|
||||
- تكامل بسيط - يعمل بسلاسة مع الأدوات الشائعة مثل Puppeteer و Playwright
|
||||
- واجهات API قوية - واجهات سهلة الاستخدام لاستخراج/زحف أي موقع
|
||||
- تجاوز إجراءات مكافحة الروبوتات - وضع التخفي المدمج وحظر الإعلانات وحل CAPTCHA التلقائي والبروكسيات الدوّارة
|
||||
|
||||
## التثبيت
|
||||
|
||||
لاستخدام هذه الأداة، تحتاج إلى تثبيت Hyperbrowser SDK:
|
||||
|
||||
```shell
|
||||
uv add hyperbrowser
|
||||
```
|
||||
|
||||
## خطوات البدء
|
||||
|
||||
لاستخدام `HyperbrowserLoadTool` بفعالية، اتبع هذه الخطوات:
|
||||
|
||||
1. **التسجيل**: توجه إلى [Hyperbrowser](https://app.hyperbrowser.ai/) للتسجيل وتوليد مفتاح API.
|
||||
2. **مفتاح API**: عيّن متغير البيئة `HYPERBROWSER_API_KEY` أو مرّره مباشرة إلى مُنشئ الأداة.
|
||||
3. **تثبيت SDK**: ثبّت Hyperbrowser SDK باستخدام الأمر أعلاه.
|
||||
|
||||
## مثال
|
||||
|
||||
يوضح المثال التالي كيفية تهيئة الأداة واستخدامها لاستخراج بيانات من موقع:
|
||||
|
||||
```python Code
|
||||
from crewai_tools import HyperbrowserLoadTool
|
||||
from crewai import Agent
|
||||
|
||||
# Initialize the tool with your API key
|
||||
tool = HyperbrowserLoadTool(api_key="your_api_key") # Or use environment variable
|
||||
|
||||
# Define an agent that uses the tool
|
||||
@agent
|
||||
def web_researcher(self) -> Agent:
|
||||
'''
|
||||
This agent uses the HyperbrowserLoadTool to scrape websites
|
||||
and extract information.
|
||||
'''
|
||||
return Agent(
|
||||
config=self.agents_config["web_researcher"],
|
||||
tools=[tool]
|
||||
)
|
||||
```
|
||||
|
||||
## المعاملات
|
||||
|
||||
تقبل أداة `HyperbrowserLoadTool` المعاملات التالية:
|
||||
|
||||
### معاملات المُنشئ
|
||||
- **api_key**: اختياري. مفتاح Hyperbrowser API الخاص بك. إذا لم يتم تقديمه، سيتم قراءته من متغير البيئة `HYPERBROWSER_API_KEY`.
|
||||
|
||||
### معاملات التشغيل
|
||||
- **url**: مطلوب. عنوان URL للموقع المراد استخراجه أو زحفه.
|
||||
- **operation**: اختياري. العملية المراد تنفيذها على الموقع. إما 'scrape' أو 'crawl'. الافتراضي هو 'scrape'.
|
||||
- **params**: اختياري. معاملات إضافية لعملية الاستخراج أو الزحف.
|
||||
|
||||
## المعاملات المدعومة
|
||||
|
||||
للحصول على معلومات مفصلة حول جميع المعاملات المدعومة، قم بزيارة:
|
||||
- [معاملات الاستخراج](https://docs.hyperbrowser.ai/reference/sdks/python/scrape#start-scrape-job-and-wait)
|
||||
- [معاملات الزحف](https://docs.hyperbrowser.ai/reference/sdks/python/crawl#start-crawl-job-and-wait)
|
||||
|
||||
## تنسيق الإرجاع
|
||||
|
||||
تُرجع الأداة المحتوى بالتنسيق التالي:
|
||||
|
||||
- لعمليات **الاستخراج**: محتوى الصفحة بتنسيق markdown أو HTML.
|
||||
- لعمليات **الزحف**: محتوى كل صفحة مفصولاً بفواصل، مع تضمين عنوان URL لكل صفحة.
|
||||
|
||||
## الخلاصة
|
||||
|
||||
توفر أداة `HyperbrowserLoadTool` طريقة قوية لاستخراج البيانات من المواقع وزحفها، مع التعامل مع السيناريوهات المعقدة مثل إجراءات مكافحة الروبوتات و CAPTCHA وغيرها. من خلال الاستفادة من منصة Hyperbrowser، تتيح هذه الأداة للوكلاء الوصول إلى محتوى الويب واستخراجه بكفاءة.
|
||||
112
docs/ar/tools/web-scraping/overview.mdx
Normal file
112
docs/ar/tools/web-scraping/overview.mdx
Normal file
@@ -0,0 +1,112 @@
|
||||
---
|
||||
title: "نظرة عامة"
|
||||
description: "استخراج البيانات من المواقع وأتمتة تفاعلات المتصفح باستخدام أدوات استخراج قوية"
|
||||
icon: "face-smile"
|
||||
mode: "wide"
|
||||
---
|
||||
|
||||
تتيح هذه الأدوات لوكلائك التفاعل مع الويب واستخراج البيانات من المواقع وأتمتة المهام المعتمدة على المتصفح. من الاستخراج البسيط من الويب إلى أتمتة المتصفح المعقدة، تغطي هذه الأدوات جميع احتياجات التفاعل مع الويب.
|
||||
|
||||
## **الأدوات المتاحة**
|
||||
|
||||
<CardGroup cols={2}>
|
||||
<Card title="أداة استخراج المواقع" icon="globe" href="/ar/tools/web-scraping/scrapewebsitetool">
|
||||
أداة استخراج بيانات من الويب متعددة الأغراض لاستخراج المحتوى من أي موقع.
|
||||
</Card>
|
||||
|
||||
<Card title="أداة استخراج العناصر" icon="crosshairs" href="/ar/tools/web-scraping/scrapeelementfromwebsitetool">
|
||||
استهداف عناصر محددة في صفحات الويب بقدرات استخراج دقيقة.
|
||||
</Card>
|
||||
|
||||
<Card title="أداة زحف Firecrawl" icon="spider" href="/ar/tools/web-scraping/firecrawlcrawlwebsitetool">
|
||||
زحف مواقع كاملة بشكل منهجي باستخدام محرك Firecrawl القوي.
|
||||
</Card>
|
||||
|
||||
<Card title="أداة استخراج Firecrawl" icon="fire" href="/ar/tools/web-scraping/firecrawlscrapewebsitetool">
|
||||
استخراج بيانات عالي الأداء من الويب مع قدرات Firecrawl المتقدمة.
|
||||
</Card>
|
||||
|
||||
<Card title="أداة بحث Firecrawl" icon="magnifying-glass" href="/ar/tools/web-scraping/firecrawlsearchtool">
|
||||
البحث واستخراج محتوى محدد باستخدام ميزات بحث Firecrawl.
|
||||
</Card>
|
||||
|
||||
<Card title="أداة استخراج Selenium" icon="robot" href="/ar/tools/web-scraping/seleniumscrapingtool">
|
||||
أتمتة المتصفح والاستخراج باستخدام قدرات Selenium WebDriver.
|
||||
</Card>
|
||||
|
||||
<Card title="أداة ScrapFly" icon="plane" href="/ar/tools/web-scraping/scrapflyscrapetool">
|
||||
استخراج احترافي من الويب مع خدمة ScrapFly المتميزة.
|
||||
</Card>
|
||||
|
||||
<Card title="أداة ScrapGraph" icon="network-wired" href="/ar/tools/web-scraping/scrapegraphscrapetool">
|
||||
استخراج بيانات من الويب قائم على الرسوم البيانية لعلاقات البيانات المعقدة.
|
||||
</Card>
|
||||
|
||||
<Card title="أداة Spider" icon="spider" href="/ar/tools/web-scraping/spidertool">
|
||||
قدرات شاملة للزحف واستخراج البيانات من الويب.
|
||||
</Card>
|
||||
|
||||
<Card title="أداة BrowserBase" icon="browser" href="/ar/tools/web-scraping/browserbaseloadtool">
|
||||
أتمتة المتصفح السحابية مع بنية BrowserBase التحتية.
|
||||
</Card>
|
||||
|
||||
<Card title="أداة HyperBrowser" icon="window-maximize" href="/ar/tools/web-scraping/hyperbrowserloadtool">
|
||||
تفاعلات متصفح سريعة مع محرك HyperBrowser المُحسّن.
|
||||
</Card>
|
||||
|
||||
<Card title="أداة Stagehand" icon="hand" href="/ar/tools/web-scraping/stagehandtool">
|
||||
أتمتة متصفح ذكية باستخدام أوامر اللغة الطبيعية.
|
||||
</Card>
|
||||
|
||||
<Card title="أداة Oxylabs للاستخراج" icon="globe" href="/ar/tools/web-scraping/oxylabsscraperstool">
|
||||
الوصول إلى بيانات الويب على نطاق واسع مع Oxylabs.
|
||||
</Card>
|
||||
|
||||
<Card title="أدوات Bright Data" icon="spider" href="/ar/tools/web-scraping/brightdata-tools">
|
||||
تكاملات بحث SERP و Web Unlocker و Dataset API.
|
||||
</Card>
|
||||
</CardGroup>
|
||||
|
||||
## **حالات الاستخدام الشائعة**
|
||||
|
||||
- **استخراج البيانات**: استخراج معلومات المنتجات والأسعار والمراجعات
|
||||
- **مراقبة المحتوى**: تتبع التغييرات على المواقع ومصادر الأخبار
|
||||
- **توليد العملاء المحتملين**: استخراج معلومات الاتصال وبيانات الأعمال
|
||||
- **أبحاث السوق**: جمع المعلومات الاستخباراتية التنافسية وبيانات السوق
|
||||
- **الاختبار وضمان الجودة**: أتمتة اختبار المتصفح وسير عمل التحقق
|
||||
- **وسائل التواصل الاجتماعي**: استخراج المنشورات والتعليقات وتحليلات وسائل التواصل الاجتماعي
|
||||
|
||||
## **مثال سريع للبدء**
|
||||
|
||||
```python
|
||||
from crewai_tools import ScrapeWebsiteTool, FirecrawlScrapeWebsiteTool, SeleniumScrapingTool
|
||||
|
||||
# Create scraping tools
|
||||
simple_scraper = ScrapeWebsiteTool()
|
||||
advanced_scraper = FirecrawlScrapeWebsiteTool()
|
||||
browser_automation = SeleniumScrapingTool()
|
||||
|
||||
# Add to your agent
|
||||
agent = Agent(
|
||||
role="Web Research Specialist",
|
||||
tools=[simple_scraper, advanced_scraper, browser_automation],
|
||||
goal="Extract and analyze web data efficiently"
|
||||
)
|
||||
```
|
||||
|
||||
## **أفضل ممارسات الاستخراج**
|
||||
|
||||
- **احترام robots.txt**: تحقق دائماً واتبع سياسات استخراج المواقع
|
||||
- **تحديد المعدل**: نفّذ تأخيرات بين الطلبات لتجنب إرهاق الخوادم
|
||||
- **وكيل المستخدم**: استخدم سلاسل وكيل مستخدم مناسبة لتعريف الروبوت الخاص بك
|
||||
- **الامتثال القانوني**: تأكد من أن أنشطة الاستخراج تتوافق مع شروط الخدمة
|
||||
- **معالجة الأخطاء**: نفّذ معالجة أخطاء قوية لمشاكل الشبكة والطلبات المحظورة
|
||||
- **جودة البيانات**: تحقق من صحة البيانات المستخرجة ونظّفها قبل المعالجة
|
||||
|
||||
## **دليل اختيار الأداة**
|
||||
|
||||
- **المهام البسيطة**: استخدم `ScrapeWebsiteTool` لاستخراج المحتوى الأساسي
|
||||
- **المواقع كثيفة JavaScript**: استخدم `SeleniumScrapingTool` للمحتوى الديناميكي
|
||||
- **التوسع والأداء**: استخدم `FirecrawlScrapeWebsiteTool` للاستخراج بكميات كبيرة
|
||||
- **البنية التحتية السحابية**: استخدم `BrowserBaseLoadTool` لأتمتة المتصفح القابلة للتوسع
|
||||
- **سير العمل المعقدة**: استخدم `StagehandTool` لتفاعلات المتصفح الذكية
|
||||
237
docs/ar/tools/web-scraping/oxylabsscraperstool.mdx
Normal file
237
docs/ar/tools/web-scraping/oxylabsscraperstool.mdx
Normal file
@@ -0,0 +1,237 @@
|
||||
---
|
||||
title: أدوات استخراج Oxylabs
|
||||
description: >
|
||||
تتيح أدوات استخراج Oxylabs الوصول بسهولة إلى المعلومات من المصادر المعنية. يرجى الاطلاع على قائمة المصادر المتاحة أدناه:
|
||||
- `Amazon Product`
|
||||
- `Amazon Search`
|
||||
- `Google Seach`
|
||||
- `Universal`
|
||||
icon: globe
|
||||
mode: "wide"
|
||||
---
|
||||
|
||||
## التثبيت
|
||||
|
||||
احصل على بيانات الاعتماد بإنشاء حساب Oxylabs [هنا](https://oxylabs.io).
|
||||
```shell
|
||||
pip install 'crewai[tools]' oxylabs
|
||||
```
|
||||
راجع [توثيق Oxylabs](https://developers.oxylabs.io/scraping-solutions/web-scraper-api/targets) للحصول على مزيد من المعلومات حول معاملات API.
|
||||
|
||||
# `OxylabsAmazonProductScraperTool`
|
||||
|
||||
### مثال
|
||||
|
||||
```python
|
||||
from crewai_tools import OxylabsAmazonProductScraperTool
|
||||
|
||||
# make sure OXYLABS_USERNAME and OXYLABS_PASSWORD variables are set
|
||||
tool = OxylabsAmazonProductScraperTool()
|
||||
|
||||
result = tool.run(query="AAAAABBBBCC")
|
||||
|
||||
print(result)
|
||||
```
|
||||
|
||||
### المعاملات
|
||||
|
||||
- `query` - رمز ASIN المكون من 10 رموز.
|
||||
- `domain` - توطين النطاق لـ Amazon.
|
||||
- `geo_location` - موقع _التوصيل إلى_.
|
||||
- `user_agent_type` - نوع الجهاز والمتصفح.
|
||||
- `render` - يفعّل تصيير JavaScript عند التعيين إلى `html`.
|
||||
- `callback_url` - عنوان URL لنقطة نهاية الاستدعاء الخاصة بك.
|
||||
- `context` - إعدادات وضوابط متقدمة إضافية للمتطلبات المتخصصة.
|
||||
- `parse` - يُرجع بيانات مُحلّلة عند التعيين إلى true.
|
||||
- `parsing_instructions` - حدد منطق التحليل وتحويل البيانات الخاص بك الذي سيُنفّذ على نتيجة استخراج HTML.
|
||||
|
||||
### مثال متقدم
|
||||
|
||||
```python
|
||||
from crewai_tools import OxylabsAmazonProductScraperTool
|
||||
|
||||
# make sure OXYLABS_USERNAME and OXYLABS_PASSWORD variables are set
|
||||
tool = OxylabsAmazonProductScraperTool(
|
||||
config={
|
||||
"domain": "com",
|
||||
"parse": True,
|
||||
"context": [
|
||||
{
|
||||
"key": "autoselect_variant",
|
||||
"value": True
|
||||
}
|
||||
]
|
||||
}
|
||||
)
|
||||
|
||||
result = tool.run(query="AAAAABBBBCC")
|
||||
|
||||
print(result)
|
||||
```
|
||||
|
||||
# `OxylabsAmazonSearchScraperTool`
|
||||
|
||||
### مثال
|
||||
|
||||
```python
|
||||
from crewai_tools import OxylabsAmazonSearchScraperTool
|
||||
|
||||
# make sure OXYLABS_USERNAME and OXYLABS_PASSWORD variables are set
|
||||
tool = OxylabsAmazonSearchScraperTool()
|
||||
|
||||
result = tool.run(query="headsets")
|
||||
|
||||
print(result)
|
||||
```
|
||||
|
||||
### المعاملات
|
||||
|
||||
- `query` - مصطلح بحث Amazon.
|
||||
- `domain` - توطين النطاق لـ Bestbuy.
|
||||
- `start_page` - رقم صفحة البداية.
|
||||
- `pages` - عدد الصفحات المراد استرجاعها.
|
||||
- `geo_location` - موقع _التوصيل إلى_.
|
||||
- `user_agent_type` - نوع الجهاز والمتصفح.
|
||||
- `render` - يفعّل تصيير JavaScript عند التعيين إلى `html`.
|
||||
- `callback_url` - عنوان URL لنقطة نهاية الاستدعاء الخاصة بك.
|
||||
- `context` - إعدادات وضوابط متقدمة إضافية للمتطلبات المتخصصة.
|
||||
- `parse` - يُرجع بيانات مُحلّلة عند التعيين إلى true.
|
||||
- `parsing_instructions` - حدد منطق التحليل وتحويل البيانات الخاص بك الذي سيُنفّذ على نتيجة استخراج HTML.
|
||||
|
||||
### مثال متقدم
|
||||
|
||||
```python
|
||||
from crewai_tools import OxylabsAmazonSearchScraperTool
|
||||
|
||||
# make sure OXYLABS_USERNAME and OXYLABS_PASSWORD variables are set
|
||||
tool = OxylabsAmazonSearchScraperTool(
|
||||
config={
|
||||
"domain": 'nl',
|
||||
"start_page": 2,
|
||||
"pages": 2,
|
||||
"parse": True,
|
||||
"context": [
|
||||
{'key': 'category_id', 'value': 16391693031}
|
||||
],
|
||||
}
|
||||
)
|
||||
|
||||
result = tool.run(query='nirvana tshirt')
|
||||
|
||||
print(result)
|
||||
```
|
||||
|
||||
# `OxylabsGoogleSearchScraperTool`
|
||||
|
||||
### مثال
|
||||
|
||||
```python
|
||||
from crewai_tools import OxylabsGoogleSearchScraperTool
|
||||
|
||||
# make sure OXYLABS_USERNAME and OXYLABS_PASSWORD variables are set
|
||||
tool = OxylabsGoogleSearchScraperTool()
|
||||
|
||||
result = tool.run(query="iPhone 16")
|
||||
|
||||
print(result)
|
||||
```
|
||||
|
||||
### المعاملات
|
||||
|
||||
- `query` - كلمة البحث المفتاحية.
|
||||
- `domain` - توطين النطاق لـ Google.
|
||||
- `start_page` - رقم صفحة البداية.
|
||||
- `pages` - عدد الصفحات المراد استرجاعها.
|
||||
- `limit` - عدد النتائج المراد استرجاعها في كل صفحة.
|
||||
- `locale` - قيمة رأس `Accept-Language` التي تغيّر لغة واجهة صفحة بحث Google.
|
||||
- `geo_location` - الموقع الجغرافي الذي يجب تكييف النتيجة له. استخدام هذا المعامل بشكل صحيح مهم للغاية للحصول على البيانات الصحيحة.
|
||||
- `user_agent_type` - نوع الجهاز والمتصفح.
|
||||
- `render` - يفعّل تصيير JavaScript عند التعيين إلى `html`.
|
||||
- `callback_url` - عنوان URL لنقطة نهاية الاستدعاء الخاصة بك.
|
||||
- `context` - إعدادات وضوابط متقدمة إضافية للمتطلبات المتخصصة.
|
||||
- `parse` - يُرجع بيانات مُحلّلة عند التعيين إلى true.
|
||||
- `parsing_instructions` - حدد منطق التحليل وتحويل البيانات الخاص بك الذي سيُنفّذ على نتيجة استخراج HTML.
|
||||
|
||||
### مثال متقدم
|
||||
|
||||
```python
|
||||
from crewai_tools import OxylabsGoogleSearchScraperTool
|
||||
|
||||
# make sure OXYLABS_USERNAME and OXYLABS_PASSWORD variables are set
|
||||
tool = OxylabsGoogleSearchScraperTool(
|
||||
config={
|
||||
"parse": True,
|
||||
"geo_location": "Paris, France",
|
||||
"user_agent_type": "tablet",
|
||||
}
|
||||
)
|
||||
|
||||
result = tool.run(query="iPhone 16")
|
||||
|
||||
print(result)
|
||||
```
|
||||
|
||||
# `OxylabsUniversalScraperTool`
|
||||
|
||||
### مثال
|
||||
|
||||
```python
|
||||
from crewai_tools import OxylabsUniversalScraperTool
|
||||
|
||||
# make sure OXYLABS_USERNAME and OXYLABS_PASSWORD variables are set
|
||||
tool = OxylabsUniversalScraperTool()
|
||||
|
||||
result = tool.run(url="https://ip.oxylabs.io")
|
||||
|
||||
print(result)
|
||||
```
|
||||
|
||||
### المعاملات
|
||||
|
||||
- `url` - عنوان URL للموقع المراد استخراجه.
|
||||
- `user_agent_type` - نوع الجهاز والمتصفح.
|
||||
- `geo_location` - يعيّن الموقع الجغرافي للبروكسي لاسترجاع البيانات.
|
||||
- `render` - يفعّل تصيير JavaScript عند التعيين إلى `html`.
|
||||
- `callback_url` - عنوان URL لنقطة نهاية الاستدعاء الخاصة بك.
|
||||
- `context` - إعدادات وضوابط متقدمة إضافية للمتطلبات المتخصصة.
|
||||
- `parse` - يُرجع بيانات مُحلّلة عند التعيين إلى `true`، طالما يوجد مُحلّل مخصص لنوع صفحة عنوان URL المقدم.
|
||||
- `parsing_instructions` - حدد منطق التحليل وتحويل البيانات الخاص بك الذي سيُنفّذ على نتيجة استخراج HTML.
|
||||
|
||||
|
||||
### مثال متقدم
|
||||
|
||||
```python
|
||||
from crewai_tools import OxylabsUniversalScraperTool
|
||||
|
||||
# make sure OXYLABS_USERNAME and OXYLABS_PASSWORD variables are set
|
||||
tool = OxylabsUniversalScraperTool(
|
||||
config={
|
||||
"render": "html",
|
||||
"user_agent_type": "mobile",
|
||||
"context": [
|
||||
{"key": "force_headers", "value": True},
|
||||
{"key": "force_cookies", "value": True},
|
||||
{
|
||||
"key": "headers",
|
||||
"value": {
|
||||
"Custom-Header-Name": "custom header content",
|
||||
},
|
||||
},
|
||||
{
|
||||
"key": "cookies",
|
||||
"value": [
|
||||
{"key": "NID", "value": "1234567890"},
|
||||
{"key": "1P JAR", "value": "0987654321"},
|
||||
],
|
||||
},
|
||||
{"key": "http_method", "value": "get"},
|
||||
{"key": "follow_redirects", "value": True},
|
||||
{"key": "successful_status_codes", "value": [808, 909]},
|
||||
],
|
||||
}
|
||||
)
|
||||
|
||||
result = tool.run(url="https://ip.oxylabs.io")
|
||||
|
||||
print(result)
|
||||
```
|
||||
140
docs/ar/tools/web-scraping/scrapeelementfromwebsitetool.mdx
Normal file
140
docs/ar/tools/web-scraping/scrapeelementfromwebsitetool.mdx
Normal file
@@ -0,0 +1,140 @@
|
||||
---
|
||||
title: أداة استخراج عنصر من موقع
|
||||
description: أداة `ScrapeElementFromWebsiteTool` تتيح لوكلاء CrewAI استخراج عناصر محددة من المواقع باستخدام محددات CSS.
|
||||
icon: code
|
||||
mode: "wide"
|
||||
---
|
||||
|
||||
# `ScrapeElementFromWebsiteTool`
|
||||
|
||||
## الوصف
|
||||
|
||||
أداة `ScrapeElementFromWebsiteTool` مصممة لاستخراج عناصر محددة من المواقع باستخدام محددات CSS. تسمح هذه الأداة لوكلاء CrewAI باستخراج محتوى مستهدف من صفحات الويب، مما يجعلها مفيدة لمهام استخراج البيانات حيث تكون أجزاء محددة فقط من صفحة الويب مطلوبة.
|
||||
|
||||
## التثبيت
|
||||
|
||||
لاستخدام هذه الأداة، تحتاج إلى تثبيت التبعيات المطلوبة:
|
||||
|
||||
```shell
|
||||
uv add requests beautifulsoup4
|
||||
```
|
||||
|
||||
## خطوات البدء
|
||||
|
||||
لاستخدام `ScrapeElementFromWebsiteTool` بفعالية، اتبع هذه الخطوات:
|
||||
|
||||
1. **تثبيت التبعيات**: ثبّت الحزم المطلوبة باستخدام الأمر أعلاه.
|
||||
2. **تحديد محددات CSS**: حدد محددات CSS للعناصر التي تريد استخراجها من الموقع.
|
||||
3. **تهيئة الأداة**: أنشئ نسخة من الأداة بالمعاملات اللازمة.
|
||||
|
||||
## مثال
|
||||
|
||||
يوضح المثال التالي كيفية استخدام `ScrapeElementFromWebsiteTool` لاستخراج عناصر محددة من موقع:
|
||||
|
||||
```python Code
|
||||
from crewai import Agent, Task, Crew
|
||||
from crewai_tools import ScrapeElementFromWebsiteTool
|
||||
|
||||
# Initialize the tool
|
||||
scrape_tool = ScrapeElementFromWebsiteTool()
|
||||
|
||||
# Define an agent that uses the tool
|
||||
web_scraper_agent = Agent(
|
||||
role="Web Scraper",
|
||||
goal="Extract specific information from websites",
|
||||
backstory="An expert in web scraping who can extract targeted content from web pages.",
|
||||
tools=[scrape_tool],
|
||||
verbose=True,
|
||||
)
|
||||
|
||||
# Example task to extract headlines from a news website
|
||||
scrape_task = Task(
|
||||
description="Extract the main headlines from the CNN homepage. Use the CSS selector '.headline' to target the headline elements.",
|
||||
expected_output="A list of the main headlines from CNN.",
|
||||
agent=web_scraper_agent,
|
||||
)
|
||||
|
||||
# Create and run the crew
|
||||
crew = Crew(agents=[web_scraper_agent], tasks=[scrape_task])
|
||||
result = crew.kickoff()
|
||||
```
|
||||
|
||||
يمكنك أيضاً تهيئة الأداة بمعاملات محددة مسبقاً:
|
||||
|
||||
```python Code
|
||||
# Initialize the tool with predefined parameters
|
||||
scrape_tool = ScrapeElementFromWebsiteTool(
|
||||
website_url="https://www.example.com",
|
||||
css_element=".main-content"
|
||||
)
|
||||
```
|
||||
|
||||
## المعاملات
|
||||
|
||||
تقبل أداة `ScrapeElementFromWebsiteTool` المعاملات التالية أثناء التهيئة:
|
||||
|
||||
- **website_url**: اختياري. عنوان URL للموقع المراد استخراجه. إذا تم تقديمه أثناء التهيئة، لن يحتاج الوكيل إلى تحديده عند استخدام الأداة.
|
||||
- **css_element**: اختياري. محدد CSS للعناصر المراد استخراجها. إذا تم تقديمه أثناء التهيئة، لن يحتاج الوكيل إلى تحديده عند استخدام الأداة.
|
||||
- **cookies**: اختياري. قاموس يحتوي على ملفات تعريف الارتباط لإرسالها مع الطلب. يمكن أن يكون مفيداً للمواقع التي تتطلب مصادقة.
|
||||
|
||||
## الاستخدام
|
||||
|
||||
عند استخدام `ScrapeElementFromWebsiteTool` مع وكيل، سيحتاج الوكيل إلى تقديم المعاملات التالية (ما لم يتم تحديدها أثناء التهيئة):
|
||||
|
||||
- **website_url**: عنوان URL للموقع المراد استخراجه.
|
||||
- **css_element**: محدد CSS للعناصر المراد استخراجها.
|
||||
|
||||
ستُرجع الأداة المحتوى النصي لجميع العناصر المطابقة لمحدد CSS، مفصولة بأسطر جديدة.
|
||||
|
||||
```python Code
|
||||
# Example of using the tool with an agent
|
||||
web_scraper_agent = Agent(
|
||||
role="Web Scraper",
|
||||
goal="Extract specific elements from websites",
|
||||
backstory="An expert in web scraping who can extract targeted content using CSS selectors.",
|
||||
tools=[scrape_tool],
|
||||
verbose=True,
|
||||
)
|
||||
|
||||
# Create a task for the agent to extract specific elements
|
||||
extract_task = Task(
|
||||
description="""
|
||||
Extract all product titles from the featured products section on example.com.
|
||||
Use the CSS selector '.product-title' to target the title elements.
|
||||
""",
|
||||
expected_output="A list of product titles from the website",
|
||||
agent=web_scraper_agent,
|
||||
)
|
||||
|
||||
# Run the task through a crew
|
||||
crew = Crew(agents=[web_scraper_agent], tasks=[extract_task])
|
||||
result = crew.kickoff()
|
||||
```
|
||||
|
||||
## تفاصيل التنفيذ
|
||||
|
||||
تستخدم أداة `ScrapeElementFromWebsiteTool` مكتبة `requests` لجلب صفحة الويب و `BeautifulSoup` لتحليل HTML واستخراج العناصر المحددة:
|
||||
|
||||
```python Code
|
||||
class ScrapeElementFromWebsiteTool(BaseTool):
|
||||
name: str = "Read a website content"
|
||||
description: str = "A tool that can be used to read a website content."
|
||||
|
||||
# Implementation details...
|
||||
|
||||
def _run(self, **kwargs: Any) -> Any:
|
||||
website_url = kwargs.get("website_url", self.website_url)
|
||||
css_element = kwargs.get("css_element", self.css_element)
|
||||
page = requests.get(
|
||||
website_url,
|
||||
headers=self.headers,
|
||||
cookies=self.cookies if self.cookies else {},
|
||||
)
|
||||
parsed = BeautifulSoup(page.content, "html.parser")
|
||||
elements = parsed.select(css_element)
|
||||
return "\n".join([element.get_text() for element in elements])
|
||||
```
|
||||
|
||||
## الخلاصة
|
||||
|
||||
توفر أداة `ScrapeElementFromWebsiteTool` طريقة قوية لاستخراج عناصر محددة من المواقع باستخدام محددات CSS. من خلال تمكين الوكلاء من استهداف المحتوى الذي يحتاجونه فقط، تجعل مهام استخراج البيانات من الويب أكثر كفاءة وتركيزاً. هذه الأداة مفيدة بشكل خاص لاستخراج البيانات ومراقبة المحتوى ومهام البحث حيث تحتاج معلومات محددة إلى استخراجها من صفحات الويب.
|
||||
197
docs/ar/tools/web-scraping/scrapegraphscrapetool.mdx
Normal file
197
docs/ar/tools/web-scraping/scrapegraphscrapetool.mdx
Normal file
@@ -0,0 +1,197 @@
|
||||
---
|
||||
title: أداة استخراج Scrapegraph
|
||||
description: أداة `ScrapegraphScrapeTool` تستفيد من SmartScraper API من Scrapegraph AI لاستخراج المحتوى من المواقع بذكاء.
|
||||
icon: chart-area
|
||||
mode: "wide"
|
||||
---
|
||||
|
||||
# `ScrapegraphScrapeTool`
|
||||
|
||||
## الوصف
|
||||
|
||||
أداة `ScrapegraphScrapeTool` مصممة للاستفادة من SmartScraper API من Scrapegraph AI لاستخراج المحتوى من المواقع بذكاء. توفر هذه الأداة قدرات متقدمة لاستخراج البيانات من الويب مع استخراج محتوى مدعوم بالذكاء الاصطناعي، مما يجعلها مثالية لمهام جمع البيانات المستهدفة وتحليل المحتوى. على عكس أدوات الاستخراج التقليدية، يمكنها فهم سياق وبنية صفحات الويب لاستخراج المعلومات الأكثر صلة بناءً على موجّهات اللغة الطبيعية.
|
||||
|
||||
## التثبيت
|
||||
|
||||
لاستخدام هذه الأداة، تحتاج إلى تثبيت عميل Scrapegraph لـ Python:
|
||||
|
||||
```shell
|
||||
uv add scrapegraph-py
|
||||
```
|
||||
|
||||
ستحتاج أيضاً إلى إعداد مفتاح Scrapegraph API كمتغير بيئة:
|
||||
|
||||
```shell
|
||||
export SCRAPEGRAPH_API_KEY="your_api_key"
|
||||
```
|
||||
|
||||
يمكنك الحصول على مفتاح API من [Scrapegraph AI](https://scrapegraphai.com).
|
||||
|
||||
## خطوات البدء
|
||||
|
||||
لاستخدام `ScrapegraphScrapeTool` بفعالية، اتبع هذه الخطوات:
|
||||
|
||||
1. **تثبيت التبعيات**: ثبّت الحزمة المطلوبة باستخدام الأمر أعلاه.
|
||||
2. **إعداد مفتاح API**: عيّن مفتاح Scrapegraph API كمتغير بيئة أو قدمه أثناء التهيئة.
|
||||
3. **تهيئة الأداة**: أنشئ نسخة من الأداة بالمعاملات اللازمة.
|
||||
4. **تحديد موجّهات الاستخراج**: أنشئ موجّهات بلغة طبيعية لتوجيه استخراج محتوى محدد.
|
||||
|
||||
## مثال
|
||||
|
||||
يوضح المثال التالي كيفية استخدام `ScrapegraphScrapeTool` لاستخراج المحتوى من موقع:
|
||||
|
||||
```python Code
|
||||
from crewai import Agent, Task, Crew
|
||||
from crewai_tools import ScrapegraphScrapeTool
|
||||
|
||||
# Initialize the tool
|
||||
scrape_tool = ScrapegraphScrapeTool(api_key="your_api_key")
|
||||
|
||||
# Define an agent that uses the tool
|
||||
web_scraper_agent = Agent(
|
||||
role="Web Scraper",
|
||||
goal="Extract specific information from websites",
|
||||
backstory="An expert in web scraping who can extract targeted content from web pages.",
|
||||
tools=[scrape_tool],
|
||||
verbose=True,
|
||||
)
|
||||
|
||||
# Example task to extract product information from an e-commerce site
|
||||
scrape_task = Task(
|
||||
description="Extract product names, prices, and descriptions from the featured products section of example.com.",
|
||||
expected_output="A structured list of product information including names, prices, and descriptions.",
|
||||
agent=web_scraper_agent,
|
||||
)
|
||||
|
||||
# Create and run the crew
|
||||
crew = Crew(agents=[web_scraper_agent], tasks=[scrape_task])
|
||||
result = crew.kickoff()
|
||||
```
|
||||
|
||||
يمكنك أيضاً تهيئة الأداة بمعاملات محددة مسبقاً:
|
||||
|
||||
```python Code
|
||||
# Initialize the tool with predefined parameters
|
||||
scrape_tool = ScrapegraphScrapeTool(
|
||||
website_url="https://www.example.com",
|
||||
user_prompt="Extract all product prices and descriptions",
|
||||
api_key="your_api_key"
|
||||
)
|
||||
```
|
||||
|
||||
## المعاملات
|
||||
|
||||
تقبل أداة `ScrapegraphScrapeTool` المعاملات التالية أثناء التهيئة:
|
||||
|
||||
- **api_key**: اختياري. مفتاح Scrapegraph API الخاص بك. إذا لم يتم تقديمه، سيبحث عن متغير البيئة `SCRAPEGRAPH_API_KEY`.
|
||||
- **website_url**: اختياري. عنوان URL للموقع المراد استخراجه. إذا تم تقديمه أثناء التهيئة، لن يحتاج الوكيل إلى تحديده عند استخدام الأداة.
|
||||
- **user_prompt**: اختياري. تعليمات مخصصة لاستخراج المحتوى. إذا تم تقديمه أثناء التهيئة، لن يحتاج الوكيل إلى تحديده عند استخدام الأداة.
|
||||
- **enable_logging**: اختياري. ما إذا كان يجب تفعيل التسجيل لعميل Scrapegraph. الافتراضي هو `False`.
|
||||
|
||||
## الاستخدام
|
||||
|
||||
عند استخدام `ScrapegraphScrapeTool` مع وكيل، سيحتاج الوكيل إلى تقديم المعاملات التالية (ما لم يتم تحديدها أثناء التهيئة):
|
||||
|
||||
- **website_url**: عنوان URL للموقع المراد استخراجه.
|
||||
- **user_prompt**: اختياري. تعليمات مخصصة لاستخراج المحتوى. الافتراضي هو "Extract the main content of the webpage".
|
||||
|
||||
ستُرجع الأداة المحتوى المستخرج بناءً على الموجّه المقدم.
|
||||
|
||||
```python Code
|
||||
# Example of using the tool with an agent
|
||||
web_scraper_agent = Agent(
|
||||
role="Web Scraper",
|
||||
goal="Extract specific information from websites",
|
||||
backstory="An expert in web scraping who can extract targeted content from web pages.",
|
||||
tools=[scrape_tool],
|
||||
verbose=True,
|
||||
)
|
||||
|
||||
# Create a task for the agent to extract specific content
|
||||
extract_task = Task(
|
||||
description="Extract the main heading and summary from example.com",
|
||||
expected_output="The main heading and summary from the website",
|
||||
agent=web_scraper_agent,
|
||||
)
|
||||
|
||||
# Run the task
|
||||
crew = Crew(agents=[web_scraper_agent], tasks=[extract_task])
|
||||
result = crew.kickoff()
|
||||
```
|
||||
|
||||
## معالجة الأخطاء
|
||||
|
||||
قد تُثير أداة `ScrapegraphScrapeTool` الاستثناءات التالية:
|
||||
|
||||
- **ValueError**: عندما يكون مفتاح API مفقوداً أو تنسيق URL غير صالح.
|
||||
- **RateLimitError**: عند تجاوز حدود معدل API.
|
||||
- **RuntimeError**: عند فشل عملية الاستخراج (مشاكل شبكة، أخطاء API).
|
||||
|
||||
يُوصى بتوجيه الوكلاء للتعامل مع الأخطاء المحتملة بسلاسة:
|
||||
|
||||
```python Code
|
||||
# Create a task that includes error handling instructions
|
||||
robust_extract_task = Task(
|
||||
description="""
|
||||
Extract the main heading from example.com.
|
||||
Be aware that you might encounter errors such as:
|
||||
- Invalid URL format
|
||||
- Missing API key
|
||||
- Rate limit exceeded
|
||||
- Network or API errors
|
||||
|
||||
If you encounter any errors, provide a clear explanation of what went wrong
|
||||
and suggest possible solutions.
|
||||
""",
|
||||
expected_output="Either the extracted heading or a clear error explanation",
|
||||
agent=web_scraper_agent,
|
||||
)
|
||||
```
|
||||
|
||||
## تحديد المعدل
|
||||
|
||||
لدى Scrapegraph API حدود معدل تختلف حسب خطة اشتراكك. ضع في الاعتبار أفضل الممارسات التالية:
|
||||
|
||||
- نفّذ تأخيرات مناسبة بين الطلبات عند معالجة عناوين URL متعددة.
|
||||
- تعامل مع أخطاء تحديد المعدل بسلاسة في تطبيقك.
|
||||
- تحقق من حدود خطة API الخاصة بك على لوحة تحكم Scrapegraph.
|
||||
|
||||
## تفاصيل التنفيذ
|
||||
|
||||
تستخدم أداة `ScrapegraphScrapeTool` عميل Scrapegraph لـ Python للتفاعل مع SmartScraper API:
|
||||
|
||||
```python Code
|
||||
class ScrapegraphScrapeTool(BaseTool):
|
||||
"""
|
||||
A tool that uses Scrapegraph AI to intelligently scrape website content.
|
||||
"""
|
||||
|
||||
# Implementation details...
|
||||
|
||||
def _run(self, **kwargs: Any) -> Any:
|
||||
website_url = kwargs.get("website_url", self.website_url)
|
||||
user_prompt = (
|
||||
kwargs.get("user_prompt", self.user_prompt)
|
||||
or "Extract the main content of the webpage"
|
||||
)
|
||||
|
||||
if not website_url:
|
||||
raise ValueError("website_url is required")
|
||||
|
||||
# Validate URL format
|
||||
self._validate_url(website_url)
|
||||
|
||||
try:
|
||||
# Make the SmartScraper request
|
||||
response = self._client.smartscraper(
|
||||
website_url=website_url,
|
||||
user_prompt=user_prompt,
|
||||
)
|
||||
|
||||
return response
|
||||
# Error handling...
|
||||
```
|
||||
|
||||
## الخلاصة
|
||||
|
||||
توفر أداة `ScrapegraphScrapeTool` طريقة قوية لاستخراج المحتوى من المواقع باستخدام فهم مدعوم بالذكاء الاصطناعي لبنية صفحات الويب. من خلال تمكين الوكلاء من استهداف معلومات محددة باستخدام موجّهات اللغة الطبيعية، تجعل مهام استخراج البيانات من الويب أكثر كفاءة وتركيزاً. هذه الأداة مفيدة بشكل خاص لاستخراج البيانات ومراقبة المحتوى ومهام البحث حيث تحتاج معلومات محددة إلى استخراجها من صفحات الويب.
|
||||
48
docs/ar/tools/web-scraping/scrapewebsitetool.mdx
Normal file
48
docs/ar/tools/web-scraping/scrapewebsitetool.mdx
Normal file
@@ -0,0 +1,48 @@
|
||||
---
|
||||
title: استخراج الموقع
|
||||
description: أداة `ScrapeWebsiteTool` مصممة لاستخراج وقراءة محتوى موقع محدد.
|
||||
icon: magnifying-glass-location
|
||||
mode: "wide"
|
||||
---
|
||||
|
||||
# `ScrapeWebsiteTool`
|
||||
|
||||
<Note>
|
||||
لا نزال نعمل على تحسين الأدوات، لذا قد يحدث سلوك غير متوقع أو تغييرات في المستقبل.
|
||||
</Note>
|
||||
|
||||
## الوصف
|
||||
|
||||
أداة مصممة لاستخراج وقراءة محتوى موقع محدد. قادرة على التعامل مع أنواع مختلفة من صفحات الويب عن طريق إجراء طلبات HTTP وتحليل محتوى HTML المستلم.
|
||||
يمكن أن تكون هذه الأداة مفيدة بشكل خاص لمهام استخراج البيانات من الويب وجمع البيانات أو استخراج معلومات محددة من المواقع.
|
||||
|
||||
## التثبيت
|
||||
|
||||
ثبّت حزمة crewai_tools
|
||||
|
||||
```shell
|
||||
pip install 'crewai[tools]'
|
||||
```
|
||||
|
||||
## مثال
|
||||
|
||||
```python
|
||||
from crewai_tools import ScrapeWebsiteTool
|
||||
|
||||
# To enable scrapping any website it finds during it's execution
|
||||
tool = ScrapeWebsiteTool()
|
||||
|
||||
# Initialize the tool with the website URL,
|
||||
# so the agent can only scrap the content of the specified website
|
||||
tool = ScrapeWebsiteTool(website_url='https://www.example.com')
|
||||
|
||||
# Extract the text from the site
|
||||
text = tool.run()
|
||||
print(text)
|
||||
```
|
||||
|
||||
## المعاملات
|
||||
|
||||
| المعامل | النوع | الوصف |
|
||||
|:---------------|:---------|:-------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| **website_url** | `string` | **إلزامي** عنوان URL للموقع لقراءة الملف. هذا هو المدخل الأساسي للأداة، يحدد محتوى أي موقع يجب استخراجه وقراءته. |
|
||||
221
docs/ar/tools/web-scraping/scrapflyscrapetool.mdx
Normal file
221
docs/ar/tools/web-scraping/scrapflyscrapetool.mdx
Normal file
@@ -0,0 +1,221 @@
|
||||
---
|
||||
title: أداة استخراج مواقع Scrapfly
|
||||
description: أداة `ScrapflyScrapeWebsiteTool` تستفيد من Scrapfly web scraping API لاستخراج المحتوى من المواقع بتنسيقات مختلفة.
|
||||
icon: spider
|
||||
mode: "wide"
|
||||
---
|
||||
|
||||
# `ScrapflyScrapeWebsiteTool`
|
||||
|
||||
## الوصف
|
||||
|
||||
أداة `ScrapflyScrapeWebsiteTool` مصممة للاستفادة من [Scrapfly](https://scrapfly.io/) web scraping API لاستخراج المحتوى من المواقع. توفر هذه الأداة قدرات متقدمة لاستخراج البيانات من الويب مع دعم المتصفح بدون واجهة والبروكسيات وميزات تجاوز مكافحة الروبوتات. تسمح باستخراج بيانات صفحات الويب بتنسيقات متعددة، بما في ذلك HTML الخام و markdown والنص العادي، مما يجعلها مثالية لمجموعة واسعة من مهام استخراج البيانات من الويب.
|
||||
|
||||
## التثبيت
|
||||
|
||||
لاستخدام هذه الأداة، تحتاج إلى تثبيت Scrapfly SDK:
|
||||
|
||||
```shell
|
||||
uv add scrapfly-sdk
|
||||
```
|
||||
|
||||
ستحتاج أيضاً إلى الحصول على مفتاح Scrapfly API بالتسجيل في [scrapfly.io/register](https://www.scrapfly.io/register/).
|
||||
|
||||
## خطوات البدء
|
||||
|
||||
لاستخدام `ScrapflyScrapeWebsiteTool` بفعالية، اتبع هذه الخطوات:
|
||||
|
||||
1. **تثبيت التبعيات**: ثبّت Scrapfly SDK باستخدام الأمر أعلاه.
|
||||
2. **الحصول على مفتاح API**: سجّل في Scrapfly للحصول على مفتاح API الخاص بك.
|
||||
3. **تهيئة الأداة**: أنشئ نسخة من الأداة بمفتاح API الخاص بك.
|
||||
4. **تكوين معاملات الاستخراج**: خصص معاملات الاستخراج بناءً على احتياجاتك.
|
||||
|
||||
## مثال
|
||||
|
||||
يوضح المثال التالي كيفية استخدام `ScrapflyScrapeWebsiteTool` لاستخراج المحتوى من موقع:
|
||||
|
||||
```python Code
|
||||
from crewai import Agent, Task, Crew
|
||||
from crewai_tools import ScrapflyScrapeWebsiteTool
|
||||
|
||||
# Initialize the tool
|
||||
scrape_tool = ScrapflyScrapeWebsiteTool(api_key="your_scrapfly_api_key")
|
||||
|
||||
# Define an agent that uses the tool
|
||||
web_scraper_agent = Agent(
|
||||
role="Web Scraper",
|
||||
goal="Extract information from websites",
|
||||
backstory="An expert in web scraping who can extract content from any website.",
|
||||
tools=[scrape_tool],
|
||||
verbose=True,
|
||||
)
|
||||
|
||||
# Example task to extract content from a website
|
||||
scrape_task = Task(
|
||||
description="Extract the main content from the product page at https://web-scraping.dev/products and summarize the available products.",
|
||||
expected_output="A summary of the products available on the website.",
|
||||
agent=web_scraper_agent,
|
||||
)
|
||||
|
||||
# Create and run the crew
|
||||
crew = Crew(agents=[web_scraper_agent], tasks=[scrape_task])
|
||||
result = crew.kickoff()
|
||||
```
|
||||
|
||||
يمكنك أيضاً تخصيص معاملات الاستخراج:
|
||||
|
||||
```python Code
|
||||
# Example with custom scraping parameters
|
||||
web_scraper_agent = Agent(
|
||||
role="Web Scraper",
|
||||
goal="Extract information from websites with custom parameters",
|
||||
backstory="An expert in web scraping who can extract content from any website.",
|
||||
tools=[scrape_tool],
|
||||
verbose=True,
|
||||
)
|
||||
|
||||
# The agent will use the tool with parameters like:
|
||||
# url="https://web-scraping.dev/products"
|
||||
# scrape_format="markdown"
|
||||
# ignore_scrape_failures=True
|
||||
# scrape_config={
|
||||
# "asp": True, # Bypass scraping blocking solutions, like Cloudflare
|
||||
# "render_js": True, # Enable JavaScript rendering with a cloud headless browser
|
||||
# "proxy_pool": "public_residential_pool", # Select a proxy pool
|
||||
# "country": "us", # Select a proxy location
|
||||
# "auto_scroll": True, # Auto scroll the page
|
||||
# }
|
||||
|
||||
scrape_task = Task(
|
||||
description="Extract the main content from the product page at https://web-scraping.dev/products using advanced scraping options including JavaScript rendering and proxy settings.",
|
||||
expected_output="A detailed summary of the products with all available information.",
|
||||
agent=web_scraper_agent,
|
||||
)
|
||||
```
|
||||
|
||||
## المعاملات
|
||||
|
||||
تقبل أداة `ScrapflyScrapeWebsiteTool` المعاملات التالية:
|
||||
|
||||
### معاملات التهيئة
|
||||
|
||||
- **api_key**: مطلوب. مفتاح Scrapfly API الخاص بك.
|
||||
|
||||
### معاملات التشغيل
|
||||
|
||||
- **url**: مطلوب. عنوان URL للموقع المراد استخراجه.
|
||||
- **scrape_format**: اختياري. التنسيق الذي يتم استخراج محتوى صفحة الويب به. الخيارات هي "raw" (HTML) أو "markdown" أو "text". الافتراضي هو "markdown".
|
||||
- **scrape_config**: اختياري. قاموس يحتوي على خيارات تكوين استخراج Scrapfly إضافية.
|
||||
- **ignore_scrape_failures**: اختياري. ما إذا كان يجب تجاهل الفشل أثناء الاستخراج. إذا تم التعيين إلى `True`، ستُرجع الأداة `None` بدلاً من إثارة استثناء عند فشل الاستخراج.
|
||||
|
||||
## خيارات تكوين Scrapfly
|
||||
|
||||
يسمح معامل `scrape_config` بتخصيص سلوك الاستخراج بالخيارات التالية:
|
||||
|
||||
- **asp**: تفعيل تجاوز حماية مكافحة الاستخراج.
|
||||
- **render_js**: تفعيل تصيير JavaScript مع متصفح سحابي بدون واجهة.
|
||||
- **proxy_pool**: اختيار مجموعة بروكسيات (مثل "public_residential_pool"، "datacenter").
|
||||
- **country**: اختيار موقع البروكسي (مثل "us"، "uk").
|
||||
- **auto_scroll**: التمرير التلقائي للصفحة لتحميل المحتوى المُحمّل كسولاً.
|
||||
- **js**: تنفيذ كود JavaScript مخصص بواسطة المتصفح بدون واجهة.
|
||||
|
||||
للحصول على قائمة كاملة بخيارات التكوين، راجع [توثيق Scrapfly API](https://scrapfly.io/docs/scrape-api/getting-started).
|
||||
|
||||
## الاستخدام
|
||||
|
||||
عند استخدام `ScrapflyScrapeWebsiteTool` مع وكيل، سيحتاج الوكيل إلى تقديم عنوان URL للموقع المراد استخراجه ويمكنه اختيارياً تحديد التنسيق وخيارات التكوين الإضافية:
|
||||
|
||||
```python Code
|
||||
# Example of using the tool with an agent
|
||||
web_scraper_agent = Agent(
|
||||
role="Web Scraper",
|
||||
goal="Extract information from websites",
|
||||
backstory="An expert in web scraping who can extract content from any website.",
|
||||
tools=[scrape_tool],
|
||||
verbose=True,
|
||||
)
|
||||
|
||||
# Create a task for the agent
|
||||
scrape_task = Task(
|
||||
description="Extract the main content from example.com in markdown format.",
|
||||
expected_output="The main content of example.com in markdown format.",
|
||||
agent=web_scraper_agent,
|
||||
)
|
||||
|
||||
# Run the task
|
||||
crew = Crew(agents=[web_scraper_agent], tasks=[scrape_task])
|
||||
result = crew.kickoff()
|
||||
```
|
||||
|
||||
للاستخدام المتقدم مع تكوين مخصص:
|
||||
|
||||
```python Code
|
||||
# Create a task with more specific instructions
|
||||
advanced_scrape_task = Task(
|
||||
description="""
|
||||
Extract content from example.com with the following requirements:
|
||||
- Convert the content to plain text format
|
||||
- Enable JavaScript rendering
|
||||
- Use a US-based proxy
|
||||
- Handle any scraping failures gracefully
|
||||
""",
|
||||
expected_output="The extracted content from example.com",
|
||||
agent=web_scraper_agent,
|
||||
)
|
||||
```
|
||||
|
||||
## معالجة الأخطاء
|
||||
|
||||
بشكل افتراضي، ستُثير أداة `ScrapflyScrapeWebsiteTool` استثناء إذا فشل الاستخراج. يمكن توجيه الوكلاء للتعامل مع الفشل بسلاسة عن طريق تحديد معامل `ignore_scrape_failures`:
|
||||
|
||||
```python Code
|
||||
# Create a task that instructs the agent to handle errors
|
||||
error_handling_task = Task(
|
||||
description="""
|
||||
Extract content from a potentially problematic website and make sure to handle any
|
||||
scraping failures gracefully by setting ignore_scrape_failures to True.
|
||||
""",
|
||||
expected_output="Either the extracted content or a graceful error message",
|
||||
agent=web_scraper_agent,
|
||||
)
|
||||
```
|
||||
|
||||
## تفاصيل التنفيذ
|
||||
|
||||
تستخدم أداة `ScrapflyScrapeWebsiteTool` Scrapfly SDK للتفاعل مع Scrapfly API:
|
||||
|
||||
```python Code
|
||||
class ScrapflyScrapeWebsiteTool(BaseTool):
|
||||
name: str = "Scrapfly web scraping API tool"
|
||||
description: str = (
|
||||
"Scrape a webpage url using Scrapfly and return its content as markdown or text"
|
||||
)
|
||||
|
||||
# Implementation details...
|
||||
|
||||
def _run(
|
||||
self,
|
||||
url: str,
|
||||
scrape_format: str = "markdown",
|
||||
scrape_config: Optional[Dict[str, Any]] = None,
|
||||
ignore_scrape_failures: Optional[bool] = None,
|
||||
):
|
||||
from scrapfly import ScrapeApiResponse, ScrapeConfig
|
||||
|
||||
scrape_config = scrape_config if scrape_config is not None else {}
|
||||
try:
|
||||
response: ScrapeApiResponse = self.scrapfly.scrape(
|
||||
ScrapeConfig(url, format=scrape_format, **scrape_config)
|
||||
)
|
||||
return response.scrape_result["content"]
|
||||
except Exception as e:
|
||||
if ignore_scrape_failures:
|
||||
logger.error(f"Error fetching data from {url}, exception: {e}")
|
||||
return None
|
||||
else:
|
||||
raise e
|
||||
```
|
||||
|
||||
## الخلاصة
|
||||
|
||||
توفر أداة `ScrapflyScrapeWebsiteTool` طريقة قوية لاستخراج المحتوى من المواقع باستخدام قدرات Scrapfly المتقدمة لاستخراج البيانات من الويب. مع ميزات مثل دعم المتصفح بدون واجهة والبروكسيات وتجاوز مكافحة الروبوتات، يمكنها التعامل مع المواقع المعقدة واستخراج المحتوى بتنسيقات مختلفة. هذه الأداة مفيدة بشكل خاص لاستخراج البيانات ومراقبة المحتوى ومهام البحث حيث يكون استخراج البيانات الموثوق من الويب مطلوباً.
|
||||
196
docs/ar/tools/web-scraping/seleniumscrapingtool.mdx
Normal file
196
docs/ar/tools/web-scraping/seleniumscrapingtool.mdx
Normal file
@@ -0,0 +1,196 @@
|
||||
---
|
||||
title: أداة استخراج Selenium
|
||||
description: أداة `SeleniumScrapingTool` مصممة لاستخراج وقراءة محتوى موقع محدد باستخدام Selenium.
|
||||
icon: clipboard-user
|
||||
mode: "wide"
|
||||
---
|
||||
|
||||
# `SeleniumScrapingTool`
|
||||
|
||||
<Note>
|
||||
هذه الأداة حالياً قيد التطوير. أثناء تحسين قدراتها، قد يواجه المستخدمون سلوكاً غير متوقع.
|
||||
ملاحظاتكم لا تقدر بثمن لإجراء التحسينات.
|
||||
</Note>
|
||||
|
||||
## الوصف
|
||||
|
||||
أداة `SeleniumScrapingTool` مصنوعة لمهام استخراج البيانات من الويب عالية الكفاءة.
|
||||
تسمح بالاستخراج الدقيق للمحتوى من صفحات الويب باستخدام محددات CSS لاستهداف عناصر محددة.
|
||||
تصميمها يخدم مجموعة واسعة من احتياجات الاستخراج، مع توفير المرونة للعمل مع أي عنوان URL مقدم.
|
||||
|
||||
## التثبيت
|
||||
|
||||
لاستخدام هذه الأداة، تحتاج إلى تثبيت حزمة أدوات CrewAI و Selenium:
|
||||
|
||||
```shell
|
||||
pip install 'crewai[tools]'
|
||||
uv add selenium webdriver-manager
|
||||
```
|
||||
|
||||
ستحتاج أيضاً إلى تثبيت Chrome على نظامك، حيث تستخدم الأداة Chrome WebDriver لأتمتة المتصفح.
|
||||
|
||||
## مثال
|
||||
|
||||
يوضح المثال التالي كيفية استخدام `SeleniumScrapingTool` مع وكيل CrewAI:
|
||||
|
||||
```python Code
|
||||
from crewai import Agent, Task, Crew, Process
|
||||
from crewai_tools import SeleniumScrapingTool
|
||||
|
||||
# Initialize the tool
|
||||
selenium_tool = SeleniumScrapingTool()
|
||||
|
||||
# Define an agent that uses the tool
|
||||
web_scraper_agent = Agent(
|
||||
role="Web Scraper",
|
||||
goal="Extract information from websites using Selenium",
|
||||
backstory="An expert web scraper who can extract content from dynamic websites.",
|
||||
tools=[selenium_tool],
|
||||
verbose=True,
|
||||
)
|
||||
|
||||
# Example task to scrape content from a website
|
||||
scrape_task = Task(
|
||||
description="Extract the main content from the homepage of example.com. Use the CSS selector 'main' to target the main content area.",
|
||||
expected_output="The main content from example.com's homepage.",
|
||||
agent=web_scraper_agent,
|
||||
)
|
||||
|
||||
# Create and run the crew
|
||||
crew = Crew(
|
||||
agents=[web_scraper_agent],
|
||||
tasks=[scrape_task],
|
||||
verbose=True,
|
||||
process=Process.sequential,
|
||||
)
|
||||
result = crew.kickoff()
|
||||
```
|
||||
|
||||
يمكنك أيضاً تهيئة الأداة بمعاملات محددة مسبقاً:
|
||||
|
||||
```python Code
|
||||
# Initialize the tool with predefined parameters
|
||||
selenium_tool = SeleniumScrapingTool(
|
||||
website_url='https://example.com',
|
||||
css_element='.main-content',
|
||||
wait_time=5
|
||||
)
|
||||
|
||||
# Define an agent that uses the tool
|
||||
web_scraper_agent = Agent(
|
||||
role="Web Scraper",
|
||||
goal="Extract information from websites using Selenium",
|
||||
backstory="An expert web scraper who can extract content from dynamic websites.",
|
||||
tools=[selenium_tool],
|
||||
verbose=True,
|
||||
)
|
||||
```
|
||||
|
||||
## المعاملات
|
||||
|
||||
تقبل أداة `SeleniumScrapingTool` المعاملات التالية أثناء التهيئة:
|
||||
|
||||
- **website_url**: اختياري. عنوان URL للموقع المراد استخراجه. إذا تم تقديمه أثناء التهيئة، لن يحتاج الوكيل إلى تحديده عند استخدام الأداة.
|
||||
- **css_element**: اختياري. محدد CSS للعناصر المراد استخراجها. إذا تم تقديمه أثناء التهيئة، لن يحتاج الوكيل إلى تحديده عند استخدام الأداة.
|
||||
- **cookie**: اختياري. قاموس يحتوي على معلومات ملفات تعريف الارتباط، مفيد لمحاكاة جلسة تسجيل دخول للوصول إلى محتوى مقيد.
|
||||
- **wait_time**: اختياري. يحدد التأخير (بالثواني) قبل الاستخراج، مما يسمح للموقع وأي محتوى ديناميكي بالتحميل الكامل. الافتراضي هو `3` ثوانٍ.
|
||||
- **return_html**: اختياري. ما إذا كان يجب إرجاع محتوى HTML بدلاً من النص فقط. الافتراضي هو `False`.
|
||||
|
||||
عند استخدام الأداة مع وكيل، سيحتاج الوكيل إلى تقديم المعاملات التالية (ما لم يتم تحديدها أثناء التهيئة):
|
||||
|
||||
- **website_url**: مطلوب. عنوان URL للموقع المراد استخراجه.
|
||||
- **css_element**: مطلوب. محدد CSS للعناصر المراد استخراجها.
|
||||
|
||||
## مثال على التكامل مع الوكيل
|
||||
|
||||
إليك مثالاً أكثر تفصيلاً لكيفية دمج `SeleniumScrapingTool` مع وكيل CrewAI:
|
||||
|
||||
```python Code
|
||||
from crewai import Agent, Task, Crew, Process
|
||||
from crewai_tools import SeleniumScrapingTool
|
||||
|
||||
# Initialize the tool
|
||||
selenium_tool = SeleniumScrapingTool()
|
||||
|
||||
# Define an agent that uses the tool
|
||||
web_scraper_agent = Agent(
|
||||
role="Web Scraper",
|
||||
goal="Extract and analyze information from dynamic websites",
|
||||
backstory="""You are an expert web scraper who specializes in extracting
|
||||
content from dynamic websites that require browser automation. You have
|
||||
extensive knowledge of CSS selectors and can identify the right selectors
|
||||
to target specific content on any website.""",
|
||||
tools=[selenium_tool],
|
||||
verbose=True,
|
||||
)
|
||||
|
||||
# Create a task for the agent
|
||||
scrape_task = Task(
|
||||
description="""
|
||||
Extract the following information from the news website at {website_url}:
|
||||
|
||||
1. The headlines of all featured articles (CSS selector: '.headline')
|
||||
2. The publication dates of these articles (CSS selector: '.pub-date')
|
||||
3. The author names where available (CSS selector: '.author')
|
||||
|
||||
Compile this information into a structured format with each article's details grouped together.
|
||||
""",
|
||||
expected_output="A structured list of articles with their headlines, publication dates, and authors.",
|
||||
agent=web_scraper_agent,
|
||||
)
|
||||
|
||||
# Run the task
|
||||
crew = Crew(
|
||||
agents=[web_scraper_agent],
|
||||
tasks=[scrape_task],
|
||||
verbose=True,
|
||||
process=Process.sequential,
|
||||
)
|
||||
result = crew.kickoff(inputs={"website_url": "https://news-example.com"})
|
||||
```
|
||||
|
||||
## تفاصيل التنفيذ
|
||||
|
||||
تستخدم أداة `SeleniumScrapingTool` Selenium WebDriver لأتمتة تفاعلات المتصفح:
|
||||
|
||||
```python Code
|
||||
class SeleniumScrapingTool(BaseTool):
|
||||
name: str = "Read a website content"
|
||||
description: str = "A tool that can be used to read a website content."
|
||||
args_schema: Type[BaseModel] = SeleniumScrapingToolSchema
|
||||
|
||||
def _run(self, **kwargs: Any) -> Any:
|
||||
website_url = kwargs.get("website_url", self.website_url)
|
||||
css_element = kwargs.get("css_element", self.css_element)
|
||||
return_html = kwargs.get("return_html", self.return_html)
|
||||
driver = self._create_driver(website_url, self.cookie, self.wait_time)
|
||||
|
||||
content = self._get_content(driver, css_element, return_html)
|
||||
driver.close()
|
||||
|
||||
return "\n".join(content)
|
||||
```
|
||||
|
||||
تنفذ الأداة الخطوات التالية:
|
||||
1. إنشاء نسخة متصفح Chrome بدون واجهة
|
||||
2. التنقل إلى عنوان URL المحدد
|
||||
3. الانتظار للمدة المحددة للسماح بتحميل الصفحة
|
||||
4. إضافة أي ملفات تعريف ارتباط إذا تم تقديمها
|
||||
5. استخراج المحتوى بناءً على محدد CSS
|
||||
6. إرجاع المحتوى المستخرج كنص أو HTML
|
||||
7. إغلاق نسخة المتصفح
|
||||
|
||||
## التعامل مع المحتوى الديناميكي
|
||||
|
||||
أداة `SeleniumScrapingTool` مفيدة بشكل خاص لاستخراج المواقع ذات المحتوى الديناميكي المُحمّل عبر JavaScript. باستخدام نسخة متصفح حقيقية، يمكنها:
|
||||
|
||||
1. تنفيذ JavaScript على الصفحة
|
||||
2. انتظار تحميل المحتوى الديناميكي
|
||||
3. التفاعل مع العناصر عند الحاجة
|
||||
4. استخراج المحتوى الذي لن يكون متاحاً مع طلبات HTTP البسيطة
|
||||
|
||||
يمكنك ضبط معامل `wait_time` لضمان تحميل جميع المحتوى الديناميكي قبل الاستخراج.
|
||||
|
||||
## الخلاصة
|
||||
|
||||
توفر أداة `SeleniumScrapingTool` طريقة قوية لاستخراج المحتوى من المواقع باستخدام أتمتة المتصفح. من خلال تمكين الوكلاء من التفاعل مع المواقع كما يفعل المستخدم الحقيقي، تسهّل استخراج المحتوى الديناميكي الذي يكون صعباً أو مستحيلاً باستخدام طرق أبسط. هذه الأداة مفيدة بشكل خاص للبحث وجمع البيانات ومهام المراقبة التي تتضمن تطبيقات ويب حديثة ذات محتوى مُصيّر بـ JavaScript.
|
||||
101
docs/ar/tools/web-scraping/serperscrapewebsitetool.mdx
Normal file
101
docs/ar/tools/web-scraping/serperscrapewebsitetool.mdx
Normal file
@@ -0,0 +1,101 @@
|
||||
---
|
||||
title: استخراج المواقع عبر Serper
|
||||
description: أداة `SerperScrapeWebsiteTool` مصممة لاستخراج المواقع واستخلاص محتوى نظيف وقابل للقراءة باستخدام Serper scraping API.
|
||||
icon: globe
|
||||
mode: "wide"
|
||||
---
|
||||
|
||||
# `SerperScrapeWebsiteTool`
|
||||
|
||||
## الوصف
|
||||
|
||||
هذه الأداة مصممة لاستخراج محتوى المواقع واستخلاص نص نظيف وقابل للقراءة من أي عنوان URL. تستخدم [serper.dev](https://serper.dev) scraping API لجلب ومعالجة صفحات الويب، مع تضمين اختياري لتنسيق markdown لبنية وقابلية قراءة أفضل.
|
||||
|
||||
## التثبيت
|
||||
|
||||
لاستخدام `SerperScrapeWebsiteTool` بفعالية، اتبع هذه الخطوات:
|
||||
|
||||
1. **تثبيت الحزمة**: تأكد من تثبيت حزمة `crewai[tools]` في بيئة Python الخاصة بك.
|
||||
2. **الحصول على مفتاح API**: احصل على مفتاح `serper.dev` API بالتسجيل للحصول على حساب في `serper.dev`.
|
||||
3. **تكوين البيئة**: خزّن مفتاح API الذي حصلت عليه في متغير بيئة باسم `SERPER_API_KEY` لتسهيل استخدامه بواسطة الأداة.
|
||||
|
||||
لدمج هذه الأداة في مشروعك، اتبع تعليمات التثبيت أدناه:
|
||||
|
||||
```shell
|
||||
pip install 'crewai[tools]'
|
||||
```
|
||||
|
||||
## مثال
|
||||
|
||||
يوضح المثال التالي كيفية تهيئة الأداة واستخراج بيانات من موقع:
|
||||
|
||||
```python Code
|
||||
from crewai_tools import SerperScrapeWebsiteTool
|
||||
|
||||
# Initialize the tool for website scraping capabilities
|
||||
tool = SerperScrapeWebsiteTool()
|
||||
|
||||
# Scrape a website with markdown formatting
|
||||
result = tool.run(url="https://example.com", include_markdown=True)
|
||||
```
|
||||
|
||||
## المعاملات
|
||||
|
||||
تقبل أداة `SerperScrapeWebsiteTool` المعاملات التالية:
|
||||
|
||||
- **url**: مطلوب. عنوان URL للموقع المراد استخراجه.
|
||||
- **include_markdown**: اختياري. ما إذا كان يجب تضمين تنسيق markdown في المحتوى المستخرج. الافتراضي هو `True`.
|
||||
|
||||
## مثال مع المعاملات
|
||||
|
||||
إليك مثالاً يوضح كيفية استخدام الأداة مع معاملات مختلفة:
|
||||
|
||||
```python Code
|
||||
from crewai_tools import SerperScrapeWebsiteTool
|
||||
|
||||
tool = SerperScrapeWebsiteTool()
|
||||
|
||||
# Scrape with markdown formatting (default)
|
||||
markdown_result = tool.run(
|
||||
url="https://docs.crewai.com",
|
||||
include_markdown=True
|
||||
)
|
||||
|
||||
# Scrape without markdown formatting for plain text
|
||||
plain_result = tool.run(
|
||||
url="https://docs.crewai.com",
|
||||
include_markdown=False
|
||||
)
|
||||
|
||||
print("Markdown formatted content:")
|
||||
print(markdown_result)
|
||||
|
||||
print("\nPlain text content:")
|
||||
print(plain_result)
|
||||
```
|
||||
|
||||
## حالات الاستخدام
|
||||
|
||||
أداة `SerperScrapeWebsiteTool` مفيدة بشكل خاص لـ:
|
||||
|
||||
- **تحليل المحتوى**: استخراج وتحليل محتوى المواقع لأغراض البحث
|
||||
- **جمع البيانات**: جمع معلومات منظمة من صفحات الويب
|
||||
- **معالجة التوثيق**: تحويل التوثيق المبني على الويب إلى تنسيقات قابلة للقراءة
|
||||
- **التحليل التنافسي**: استخراج بيانات مواقع المنافسين لأبحاث السوق
|
||||
- **ترحيل المحتوى**: استخراج المحتوى من المواقع الحالية لأغراض الترحيل
|
||||
|
||||
## معالجة الأخطاء
|
||||
|
||||
تتضمن الأداة معالجة شاملة للأخطاء لـ:
|
||||
|
||||
- **مشاكل الشبكة**: التعامل بسلاسة مع مهلات الاتصال وأخطاء الشبكة
|
||||
- **أخطاء API**: توفير رسائل خطأ مفصلة للمشاكل المتعلقة بـ API
|
||||
- **عناوين URL غير صالحة**: التحقق من المشاكل المتعلقة بعناوين URL المشوّهة والإبلاغ عنها
|
||||
- **المصادقة**: رسائل خطأ واضحة لمفاتيح API المفقودة أو غير الصالحة
|
||||
|
||||
## اعتبارات الأمان
|
||||
|
||||
- خزّن دائماً `SERPER_API_KEY` في متغيرات البيئة، ولا تضعه مباشرة في كودك المصدري
|
||||
- انتبه لحدود المعدل المفروضة من Serper API
|
||||
- احترم robots.txt وشروط خدمة المواقع عند استخراج المحتوى
|
||||
- فكر في تنفيذ تأخيرات بين الطلبات لعمليات الاستخراج واسعة النطاق
|
||||
93
docs/ar/tools/web-scraping/spidertool.mdx
Normal file
93
docs/ar/tools/web-scraping/spidertool.mdx
Normal file
@@ -0,0 +1,93 @@
|
||||
---
|
||||
title: أداة استخراج Spider
|
||||
description: أداة `SpiderTool` مصممة لاستخراج وقراءة محتوى موقع محدد باستخدام Spider.
|
||||
icon: spider-web
|
||||
mode: "wide"
|
||||
---
|
||||
|
||||
# `SpiderTool`
|
||||
|
||||
## الوصف
|
||||
|
||||
[Spider](https://spider.cloud/?ref=crewai) هي [الأسرع](https://github.com/spider-rs/spider/blob/main/benches/BENCHMARKS.md#benchmark-results)
|
||||
أداة استخراج وزحف مفتوحة المصدر تُرجع بيانات جاهزة لـ LLM.
|
||||
تحوّل أي موقع إلى HTML نقي أو markdown أو بيانات وصفية أو نص مع تمكين الزحف بإجراءات مخصصة باستخدام الذكاء الاصطناعي.
|
||||
|
||||
## التثبيت
|
||||
|
||||
لاستخدام `SpiderTool` تحتاج إلى تنزيل [Spider SDK](https://pypi.org/project/spider-client/)
|
||||
وحزمة `crewai[tools]` SDK أيضاً:
|
||||
|
||||
```shell
|
||||
pip install spider-client 'crewai[tools]'
|
||||
```
|
||||
|
||||
## مثال
|
||||
|
||||
يوضح هذا المثال كيفية استخدام `SpiderTool` لتمكين وكيلك من استخراج المواقع وزحفها.
|
||||
البيانات المُرجعة من Spider API جاهزة بالفعل لـ LLM، لذا لا حاجة لأي تنظيف.
|
||||
|
||||
```python Code
|
||||
from crewai_tools import SpiderTool
|
||||
|
||||
def main():
|
||||
spider_tool = SpiderTool()
|
||||
|
||||
searcher = Agent(
|
||||
role="Web Research Expert",
|
||||
goal="Find related information from specific URL's",
|
||||
backstory="An expert web researcher that uses the web extremely well",
|
||||
tools=[spider_tool],
|
||||
verbose=True,
|
||||
)
|
||||
|
||||
return_metadata = Task(
|
||||
description="Scrape https://spider.cloud with a limit of 1 and enable metadata",
|
||||
expected_output="Metadata and 10 word summary of spider.cloud",
|
||||
agent=searcher
|
||||
)
|
||||
|
||||
crew = Crew(
|
||||
agents=[searcher],
|
||||
tasks=[
|
||||
return_metadata,
|
||||
],
|
||||
verbose=2
|
||||
)
|
||||
|
||||
crew.kickoff()
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
```
|
||||
|
||||
## المعاملات
|
||||
| المعامل | النوع | الوصف |
|
||||
|:------------------|:---------|:-----------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| **api_key** | `string` | يحدد مفتاح Spider API. إذا لم يتم تحديده، يبحث عن `SPIDER_API_KEY` في متغيرات البيئة. |
|
||||
| **params** | `object` | معاملات اختيارية للطلب. الافتراضي هو `{"return_format": "markdown"}` لتحسين المحتوى لـ LLMs. |
|
||||
| **request** | `string` | نوع الطلب المراد تنفيذه (`http`، `chrome`، `smart`). `smart` يستخدم HTTP افتراضياً، مع التبديل إلى تصيير JavaScript عند الحاجة. |
|
||||
| **limit** | `int` | الحد الأقصى لعدد الصفحات للزحف لكل موقع. عيّن إلى `0` أو اتركه للزحف غير المحدود. |
|
||||
| **depth** | `int` | الحد الأقصى لعمق الزحف. عيّن إلى `0` بدون حد. |
|
||||
| **cache** | `bool` | يفعّل التخزين المؤقت لـ HTTP لتسريع التشغيلات المتكررة. الافتراضي هو `true`. |
|
||||
| **budget** | `object` | يعيّن حدوداً على أساس المسار للصفحات المزحوفة، مثل `{"*":1}` لصفحة الجذر فقط. |
|
||||
| **locale** | `string` | اللغة المحلية للطلب، مثل `en-US`. |
|
||||
| **cookies** | `string` | ملفات تعريف ارتباط HTTP للطلب. |
|
||||
| **stealth** | `bool` | يفعّل وضع التخفي لطلبات Chrome لتجنب الاكتشاف. الافتراضي هو `true`. |
|
||||
| **headers** | `object` | رؤوس HTTP كخريطة من أزواج مفتاح-قيمة لجميع الطلبات. |
|
||||
| **metadata** | `bool` | يخزّن البيانات الوصفية حول الصفحات والمحتوى، مما يساعد على التوافق مع الذكاء الاصطناعي. الافتراضي هو `false`. |
|
||||
| **viewport** | `object` | يعيّن أبعاد نافذة العرض لـ Chrome. الافتراضي هو `800x600`. |
|
||||
| **encoding** | `string` | يحدد نوع الترميز، مثل `UTF-8`، `SHIFT_JIS`. |
|
||||
| **subdomains** | `bool` | يتضمن النطاقات الفرعية في الزحف. الافتراضي هو `false`. |
|
||||
| **user_agent** | `string` | وكيل مستخدم HTTP مخصص. الافتراضي هو وكيل عشوائي. |
|
||||
| **store_data** | `bool` | يفعّل تخزين البيانات للطلب. يتجاوز `storageless` عند التعيين. الافتراضي هو `false`. |
|
||||
| **gpt_config** | `object` | يسمح للذكاء الاصطناعي بتوليد إجراءات الزحف، مع خطوات تسلسل اختيارية عبر مصفوفة لـ `"prompt"`. |
|
||||
| **fingerprint** | `bool` | يفعّل البصمة المتقدمة لـ Chrome. |
|
||||
| **storageless** | `bool` | يمنع جميع عمليات تخزين البيانات، بما في ذلك تضمينات الذكاء الاصطناعي. الافتراضي هو `false`. |
|
||||
| **readability** | `bool` | يُعالج المحتوى مسبقاً للقراءة عبر [أداة القراءة من Mozilla](https://github.com/mozilla/readability). يحسّن المحتوى لـ LLMs. |
|
||||
| **return_format** | `string` | التنسيق لإرجاع البيانات: `markdown`، `raw`، `text`، `html2text`. استخدم `raw` لتنسيق الصفحة الافتراضي. |
|
||||
| **proxy_enabled** | `bool` | يفعّل بروكسيات عالية الأداء لتجنب الحظر على مستوى الشبكة. |
|
||||
| **query_selector** | `string` | محدد CSS لاستخراج المحتوى من الترميز. |
|
||||
| **full_resources** | `bool` | يُنزّل جميع الموارد المرتبطة بالموقع. |
|
||||
| **request_timeout** | `int` | المهلة بالثواني للطلبات (5-60). الافتراضي هو `30`. |
|
||||
| **run_in_background** | `bool` | يشغّل الطلب في الخلفية، مفيد لتخزين البيانات وتشغيل زحف لوحة التحكم. لا تأثير إذا تم تعيين `storageless`. |
|
||||
245
docs/ar/tools/web-scraping/stagehandtool.mdx
Normal file
245
docs/ar/tools/web-scraping/stagehandtool.mdx
Normal file
@@ -0,0 +1,245 @@
|
||||
---
|
||||
title: أداة Stagehand
|
||||
description: أداة أتمتة الويب التي تدمج Stagehand مع CrewAI للتفاعل مع المتصفح وأتمتة المهام
|
||||
icon: hand
|
||||
mode: "wide"
|
||||
---
|
||||
|
||||
|
||||
# نظرة عامة
|
||||
|
||||
تدمج أداة `StagehandTool` إطار عمل [Stagehand](https://docs.stagehand.dev/get_started/introduction) مع CrewAI، مما يتيح للوكلاء التفاعل مع المواقع الإلكترونية وأتمتة مهام المتصفح باستخدام تعليمات بلغة طبيعية.
|
||||
|
||||
## نظرة عامة
|
||||
|
||||
Stagehand هو إطار عمل قوي لأتمتة المتصفح تم تطويره بواسطة Browserbase ويتيح لوكلاء الذكاء الاصطناعي:
|
||||
|
||||
- التنقل إلى المواقع الإلكترونية
|
||||
- النقر على الأزرار والروابط والعناصر الأخرى
|
||||
- ملء النماذج
|
||||
- استخراج البيانات من صفحات الويب
|
||||
- مراقبة العناصر وتحديدها
|
||||
- تنفيذ سير عمل معقدة
|
||||
|
||||
تغلف أداة StagehandTool حزمة Stagehand Python SDK لتزويد وكلاء CrewAI بإمكانيات التحكم في المتصفح من خلال ثلاثة عمليات أساسية:
|
||||
|
||||
1. **Act**: تنفيذ إجراءات مثل النقر والكتابة والتنقل
|
||||
2. **Extract**: استخراج بيانات منظمة من صفحات الويب
|
||||
3. **Observe**: تحديد العناصر وتحليلها في الصفحة
|
||||
|
||||
## المتطلبات الأساسية
|
||||
|
||||
قبل استخدام هذه الأداة، تأكد من توفر ما يلي:
|
||||
|
||||
1. حساب على [Browserbase](https://www.browserbase.com/) مع مفتاح API ومعرف المشروع
|
||||
2. مفتاح API لنموذج لغوي كبير (OpenAI أو Anthropic Claude)
|
||||
3. تثبيت حزمة Stagehand Python SDK
|
||||
|
||||
قم بتثبيت التبعية المطلوبة:
|
||||
|
||||
```bash
|
||||
pip install stagehand-py
|
||||
```
|
||||
|
||||
## الاستخدام
|
||||
|
||||
### التنفيذ الأساسي
|
||||
|
||||
يمكن تنفيذ أداة StagehandTool بطريقتين:
|
||||
|
||||
#### 1. استخدام مدير السياق (موصى به)
|
||||
<Tip>
|
||||
يُوصى باستخدام مدير السياق لأنه يضمن التنظيف السليم للموارد حتى في حالة حدوث استثناءات.
|
||||
</Tip>
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
from crewai_tools import StagehandTool
|
||||
from stagehand.schemas import AvailableModel
|
||||
|
||||
# Initialize the tool with your API keys using a context manager
|
||||
with StagehandTool(
|
||||
api_key="your-browserbase-api-key",
|
||||
project_id="your-browserbase-project-id",
|
||||
model_api_key="your-llm-api-key", # OpenAI or Anthropic API key
|
||||
model_name=AvailableModel.CLAUDE_3_7_SONNET_LATEST, # Optional: specify which model to use
|
||||
) as stagehand_tool:
|
||||
# Create an agent with the tool
|
||||
researcher = Agent(
|
||||
role="Web Researcher",
|
||||
goal="Find and summarize information from websites",
|
||||
backstory="I'm an expert at finding information online.",
|
||||
verbose=True,
|
||||
tools=[stagehand_tool],
|
||||
)
|
||||
|
||||
# Create a task that uses the tool
|
||||
research_task = Task(
|
||||
description="Go to https://www.example.com and tell me what you see on the homepage.",
|
||||
agent=researcher,
|
||||
)
|
||||
|
||||
# Run the crew
|
||||
crew = Crew(
|
||||
agents=[researcher],
|
||||
tasks=[research_task],
|
||||
verbose=True,
|
||||
)
|
||||
|
||||
result = crew.kickoff()
|
||||
print(result)
|
||||
```
|
||||
|
||||
#### 2. إدارة الموارد يدوياً
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
from crewai_tools import StagehandTool
|
||||
from stagehand.schemas import AvailableModel
|
||||
|
||||
# Initialize the tool with your API keys
|
||||
stagehand_tool = StagehandTool(
|
||||
api_key="your-browserbase-api-key",
|
||||
project_id="your-browserbase-project-id",
|
||||
model_api_key="your-llm-api-key",
|
||||
model_name=AvailableModel.CLAUDE_3_7_SONNET_LATEST,
|
||||
)
|
||||
|
||||
try:
|
||||
# Create an agent with the tool
|
||||
researcher = Agent(
|
||||
role="Web Researcher",
|
||||
goal="Find and summarize information from websites",
|
||||
backstory="I'm an expert at finding information online.",
|
||||
verbose=True,
|
||||
tools=[stagehand_tool],
|
||||
)
|
||||
|
||||
# Create a task that uses the tool
|
||||
research_task = Task(
|
||||
description="Go to https://www.example.com and tell me what you see on the homepage.",
|
||||
agent=researcher,
|
||||
)
|
||||
|
||||
# Run the crew
|
||||
crew = Crew(
|
||||
agents=[researcher],
|
||||
tasks=[research_task],
|
||||
verbose=True,
|
||||
)
|
||||
|
||||
result = crew.kickoff()
|
||||
print(result)
|
||||
finally:
|
||||
# Explicitly clean up resources
|
||||
stagehand_tool.close()
|
||||
```
|
||||
|
||||
## أنواع الأوامر
|
||||
|
||||
تدعم أداة StagehandTool ثلاثة أنواع مختلفة من الأوامر لمهام أتمتة الويب المحددة:
|
||||
|
||||
### 1. أمر Act
|
||||
|
||||
يتيح نوع الأمر `act` (الافتراضي) التفاعل مع صفحات الويب مثل النقر على الأزرار وملء النماذج والتنقل.
|
||||
|
||||
```python
|
||||
# Perform an action (default behavior)
|
||||
result = stagehand_tool.run(
|
||||
instruction="Click the login button",
|
||||
url="https://example.com",
|
||||
command_type="act" # Default, so can be omitted
|
||||
)
|
||||
|
||||
# Fill out a form
|
||||
result = stagehand_tool.run(
|
||||
instruction="Fill the contact form with name 'John Doe', email 'john@example.com', and message 'Hello world'",
|
||||
url="https://example.com/contact"
|
||||
)
|
||||
```
|
||||
|
||||
### 2. أمر Extract
|
||||
|
||||
يسترجع نوع الأمر `extract` بيانات منظمة من صفحات الويب.
|
||||
|
||||
```python
|
||||
# Extract all product information
|
||||
result = stagehand_tool.run(
|
||||
instruction="Extract all product names, prices, and descriptions",
|
||||
url="https://example.com/products",
|
||||
command_type="extract"
|
||||
)
|
||||
|
||||
# Extract specific information with a selector
|
||||
result = stagehand_tool.run(
|
||||
instruction="Extract the main article title and content",
|
||||
url="https://example.com/blog/article",
|
||||
command_type="extract",
|
||||
selector=".article-container" # Optional CSS selector
|
||||
)
|
||||
```
|
||||
|
||||
### 3. أمر Observe
|
||||
|
||||
يحدد نوع الأمر `observe` عناصر صفحات الويب ويحللها.
|
||||
|
||||
```python
|
||||
# Find interactive elements
|
||||
result = stagehand_tool.run(
|
||||
instruction="Find all interactive elements in the navigation menu",
|
||||
url="https://example.com",
|
||||
command_type="observe"
|
||||
)
|
||||
|
||||
# Identify form fields
|
||||
result = stagehand_tool.run(
|
||||
instruction="Identify all the input fields in the registration form",
|
||||
url="https://example.com/register",
|
||||
command_type="observe",
|
||||
selector="#registration-form"
|
||||
)
|
||||
```
|
||||
|
||||
## خيارات الإعداد
|
||||
|
||||
يمكنك تخصيص سلوك أداة StagehandTool باستخدام المعاملات التالية:
|
||||
|
||||
```python
|
||||
stagehand_tool = StagehandTool(
|
||||
api_key="your-browserbase-api-key",
|
||||
project_id="your-browserbase-project-id",
|
||||
model_api_key="your-llm-api-key",
|
||||
model_name=AvailableModel.CLAUDE_3_7_SONNET_LATEST,
|
||||
dom_settle_timeout_ms=5000, # Wait longer for DOM to settle
|
||||
headless=True, # Run browser in headless mode
|
||||
self_heal=True, # Attempt to recover from errors
|
||||
wait_for_captcha_solves=True, # Wait for CAPTCHA solving
|
||||
verbose=1, # Control logging verbosity (0-3)
|
||||
)
|
||||
```
|
||||
|
||||
## أفضل الممارسات
|
||||
|
||||
1. **كن محدداً**: قدم تعليمات مفصلة للحصول على نتائج أفضل
|
||||
2. **اختر نوع الأمر المناسب**: حدد نوع الأمر الصحيح لمهمتك
|
||||
3. **استخدم المحددات**: استفد من محددات CSS لتحسين الدقة
|
||||
4. **قسّم المهام المعقدة**: قسّم سير العمل المعقدة إلى عدة استدعاءات للأداة
|
||||
5. **طبّق معالجة الأخطاء**: أضف معالجة الأخطاء للمشكلات المحتملة
|
||||
|
||||
## استكشاف الأخطاء وإصلاحها
|
||||
|
||||
|
||||
المشكلات الشائعة وحلولها:
|
||||
|
||||
- **مشكلات الجلسة**: تحقق من مفاتيح API لكل من Browserbase ومزود النموذج اللغوي
|
||||
- **العنصر غير موجود**: قم بزيادة قيمة `dom_settle_timeout_ms` للصفحات البطيئة
|
||||
- **فشل الإجراء**: استخدم `observe` لتحديد العناصر الصحيحة أولاً
|
||||
- **بيانات غير مكتملة**: حسّن التعليمات أو قدم محددات محددة
|
||||
|
||||
|
||||
## موارد إضافية
|
||||
|
||||
للأسئلة حول تكامل CrewAI:
|
||||
- انضم إلى مجتمع Stagehand على [Slack](https://stagehand.dev/slack)
|
||||
- افتح مشكلة في [مستودع Stagehand](https://github.com/browserbase/stagehand)
|
||||
- قم بزيارة [وثائق Stagehand](https://docs.stagehand.dev/)
|
||||
Reference in New Issue
Block a user