Skip to main content

Autonomous Scraping Agent: Scrape URLs with prompts and schema

Project description

SmartScrapingAgent

SmartScrapingAgent is a Python package designed to simplify web scraping using state-of-the-art LLMs (Large Language Models) and customizable schemas. With this package, you can extract structured data efficiently from large, complex web pages.


Installation

Step 1: Install SmartScrapingAgent

Install the Smart Scraping Agent package:

pip install ai-tech-crawler

Step 2: Install Playwright

Install Playwright, which is required for handling headless browsing:

playwright install

Usage

Here is a step-by-step guide to using the Smart Scraping Agent package:

N.B.: This import is required only for jupyter notebooks, since they have their own eventloop

pip install nest-asyncio
import nest_asyncio

nest_asyncio.apply()

Step 1: Import Required Modules

Import necessary modules and classes:

import os, json
from dotenv import load_dotenv


load_dotenv()

Step 2: Define the Configuration

Set up the configuration for the scraping pipeline:

agent_config = {
    "llm": {
        "api_key": os.getenv('OPENAI_API_KEY'),
        "model": "openai/gpt-4o-mini",
        # Uncomment for other models
        # "model": "ollama/nemotron-mini",
        # "device": "cuda",
        # "model_kwargs": {'response_format': {"type": "json_object"}}
    },
    "verbose": True,
    "headless": True,
    "max_retries": 3
}

Step 3: Write Your Prompt

Define a simple prompt to guide the scraping process:

simple_prompt = """
Extract all the trending topics, their search volumes, when it started trending and the trend breakdown from the website's content.
"""

Step 4: Load the Schema

Use the schema to define the structure of the extracted data: Schema can be:

  1. format instruction string with examples
  2. dict
  3. json
  4. pydantic or BaseModel
schema_ = {
    'trends': [
        {
            'topic': 'Trending topic',
            'search_volume': 'Search Volume of a topic',
            'started': 'Time when it started trending',
            'trend_breakdown': 'A trend may consist of multiple queries that are variants of the same search or considered to be related. Trend breakdown details these queries.'
         }
    ],
    'other_links':[
        'list of any other reference URLs'
    ]
}

N.B.: For better results use a valid pydantic schema which is a subclass of BaseModel.

Step 5: Instantiate the SmartScraperAgent

Create an instance of the SmartScraperAgent with the necessary parameters:

from ai_tech_crawler import SmartScraperAgent

url = "https://trends.google.com/trending"

smart_scraper_agent = SmartScraperAgent(
    prompt=simple_prompt,
    source=url,
    config=agent_config,
    schema=schema_
)

Step 6: Run the Scraper

Execute the scraping pipeline and process the results:

result = smart_scraper_agent.run()
print(json.dumps(result, indent=4))

Load a Webpage content as Markdown

markdown_content = smart_scraper_agent.get_markdown()
print(markdown_content)

Load recursive webpages and split it into Documents

documents = smart_scraper_agent.load_indepth_and_split(depth=2)
print(documents[0].page_content)
print(documents[0].metadata)

Key Features

  • LLM-Powered: Leverage advanced models like GPT for smart data extraction.
  • Schema-Driven: Flexible schema design to control output format.
  • Headless Browsing: Playwright integration for efficient, non-visual browsing.
  • Customizable: Fine-tune the pipeline using configurations and custom merge methods.

Contributing

Contributions are welcome! Feel free to submit issues or pull requests on the GitHub repository.


License

This project is licensed under the MIT License. See the LICENSE file for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ai_tech_crawler-0.0.3.tar.gz (23.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ai_tech_crawler-0.0.3-py3-none-any.whl (22.7 kB view details)

Uploaded Python 3

File details

Details for the file ai_tech_crawler-0.0.3.tar.gz.

File metadata

  • Download URL: ai_tech_crawler-0.0.3.tar.gz
  • Upload date:
  • Size: 23.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.9.22

File hashes

Hashes for ai_tech_crawler-0.0.3.tar.gz
Algorithm Hash digest
SHA256 de2b0da86bdd5e6618ca0244a9cf5caca6a75f72e1e5f8de0cbae63491913af5
MD5 cdd090c739f415f0985897f73917da3c
BLAKE2b-256 87c68f6fb9e25fd115d5369be391d18045a11dc1270fdcb0ec24d757821444f6

See more details on using hashes here.

File details

Details for the file ai_tech_crawler-0.0.3-py3-none-any.whl.

File metadata

File hashes

Hashes for ai_tech_crawler-0.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 eb54b62d003436f97fd4abf15df67b7903bc1bdbee1becb660e999aac4a736f4
MD5 c6e51d6433b3ba8f3786dc7ef93e7940
BLAKE2b-256 ba805f81c24ed46ef7398573d836e1990d6902aef70eee302ef30b9235b0f040

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page