HEX
Server: LiteSpeed
System: Linux houston.panomity.com 6.8.0-100-generic #100-Ubuntu SMP PREEMPT_DYNAMIC Tue Jan 13 16:40:06 UTC 2026 x86_64
User: nudepix (1011)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: //opt/PraisonAI/docs/tools/spider_tools.mdx
---
title: "Spider Agent"
description: "Web scraping tools for AI agents."
icon: "spider"
---

<Note>
  **Prerequisites**
  - Python 3.10 or higher
  - PraisonAI Agents package installed
  - `scrapy` package installed
</Note>

## Spider Tools

Use Spider Tools to crawl and scrape web content with AI agents.

<Steps>
  <Step title="Install Dependencies">
    First, install the required packages:
    ```bash
    pip install praisonaiagents scrapy
    ```
  </Step>

  <Step title="Import Components">
    Import the necessary components:
    ```python
    from praisonaiagents import Agent, Task, PraisonAIAgents
    from praisonaiagents.tools import scrape_page, extract_links, crawl, extract_text
    ```
  </Step>

  <Step title="Create Agent">
    Create a web scraping agent:
    ```python
    spider_agent = Agent(
        name="WebSpider",
        role="Web Scraping Specialist",
        goal="Extract and analyze web content efficiently.",
        backstory="Expert in web scraping and content extraction.",
        tools=[scrape_page, extract_links, crawl, extract_text],
        self_reflect=False
    )
    ```
  </Step>

  <Step title="Define Task">
    Define the scraping task:
    ```python
    scraping_task = Task(
        description="Scrape product information from an e-commerce website.",
        expected_output="Structured product data with prices and descriptions.",
        agent=spider_agent,
        name="product_scraping"
    )
    ```
  </Step>

  <Step title="Run Agent">
    Initialize and run the agent:
    ```python
    agents = PraisonAIAgents(
        agents=[spider_agent],
        tasks=[scraping_task],
        process="sequential"
    )
    agents.start()
    ```
  </Step>
</Steps>

## Understanding Spider Tools

<Card title="What are Spider Tools?" icon="question">
  Spider Tools provide web scraping capabilities for AI agents:
  - Page scraping and downloading
  - Content extraction and filtering
  - Link discovery and crawling
  - HTML parsing and cleaning
  - Data structuring and formatting
</Card>

## Key Components

<CardGroup cols={2}>
  <Card title="Spider Agent" icon="user-robot">
    Create specialized scraping agents:
    ```python
    Agent(tools=[scrape_page, extract_content, crawl_links, parse_html, structure_data])
    ```
  </Card>
  <Card title="Spider Task" icon="list-check">
    Define scraping tasks:
    ```python
    Task(description="scraping_query")
    ```
  </Card>
  <Card title="Process Types" icon="arrows-split-up-and-left">
    Sequential or parallel processing:
    ```python
    process="sequential"
    ```
  </Card>
  <Card title="Scraping Options" icon="sliders">
    Customize scraping parameters:
    ```python
    max_depth=2, delay=1
    ```
  </Card>
</CardGroup>

## Examples

### Basic Web Scraping Agent

```python
from praisonaiagents import Agent, Task, PraisonAIAgents
from praisonaiagents.tools import scrape_page, extract_links, crawl, extract_text

# Create search agent
agent = Agent(
    name="WebCrawler",
    role="Web Scraping Specialist",
    goal="Extract and analyze web content efficiently.",
    backstory="Expert in web scraping and content extraction.",
    tools=[scrape_page, extract_links, crawl, extract_text],
    self_reflect=False
)

# Define task
task = Task(
    description="Scrape and analyze the content from 'https://example.com'",
    expected_output="Extracted content with links and text analysis",
    agent=agent,
    name="web_scraping"
)

# Run agent
agents = PraisonAIAgents(
    agents=[agent],
    tasks=[task],
    process="sequential"
)
agents.start()
```

### Advanced Scraping with Multiple Agents

```python
# Create scraping agent
scraper_agent = Agent(
    name="Scraper",
    role="Content Scraper",
    goal="Extract web content systematically.",
    tools=[scrape_page, crawl_links, parse_html],
    self_reflect=False
)

# Create analysis agent
analysis_agent = Agent(
    name="Analyzer",
    role="Content Analyst",
    goal="Analyze and structure scraped content.",
    backstory="Expert in data analysis and organization.",
    tools=[extract_content, structure_data],
    self_reflect=False
)

# Define tasks
scraping_task = Task(
    description="Scrape product data from multiple pages.",
    agent=scraper_agent,
    name="product_scraping"
)

analysis_task = Task(
    description="Analyze and structure the scraped product data.",
    agent=analysis_agent,
    name="data_analysis"
)

# Run agents
agents = PraisonAIAgents(
    agents=[scraper_agent, analysis_agent],
    tasks=[scraping_task, analysis_task],
    process="sequential"
)
agents.start()
```

## Best Practices

<AccordionGroup>
  <Accordion title="Agent Configuration">
    Configure agents with clear scraping focus:
    ```python
    Agent(
        name="WebScraper",
        role="Content Extraction Specialist",
        goal="Extract web content ethically and efficiently",
        tools=[scrape_page, extract_content, crawl_links, parse_html, structure_data]
    )
    ```
  </Accordion>

  <Accordion title="Task Definition">
    Define specific scraping objectives:
    ```python
    Task(
        description="Extract product prices and descriptions from e-commerce site",
        expected_output="Structured product database"
    )
    ```
  </Accordion>
</AccordionGroup>

## Common Patterns

### Web Scraping Pipeline
```python
# Scraping agent
scraper = Agent(
    name="Scraper",
    role="Web Scraper",
    tools=[scrape_page, crawl_links, parse_html]
)

# Processing agent
processor = Agent(
    name="Processor",
    role="Data Processor",
    tools=[extract_content, structure_data]
)

# Define tasks
scrape_task = Task(
    description="Scrape website content",
    agent=scraper
)

process_task = Task(
    description="Process scraped content",
    agent=processor
)

# Run workflow
agents = PraisonAIAgents(
    agents=[scraper, processor],
    tasks=[scrape_task, process_task]
)