智能网页数据提取工具

Skrapr是一款结合AI能力和浏览器自动化的智能网页数据提取工具,可根据JSON模式从网站提取结构化数据,适用于数据采集和分析场景。

  • by pierregillon
  • C#
  • 混合部署
  • 1 星标
  • 更新于
在 GitHub 查看 pierregillon/Skrapr

使用说明

Skrapr-MCP服务器

🎉 云版本可用! 填写此表格 以获得访问权限。

Skrapr是一个 智能网页抓取工具 它将人工智能功能与浏览器自动化相结合,从网站中提取结构化数据。

简言之:

website url + JSON schema = structured website data

此工具是http请求工具(转储)和抓取工具(暴力破解)之间的替代品。

运作原理

flowchart LR
  
  agent["Your AI Agent"] l1@--> | scrape_with_schema | skrapr["Skrapr"]
  
  subgraph server [Skrapr MCP Server]

  skrapr l2@--> | use tool | playwright["Playwright MCP"]

  end

  playwright l3@--> |navigates| website["Website"]
  skrapr l4@--> | think with | openai["Azure OpenAI"]
  skrapr l5@-.-> | json data | agent


  classDef customer stroke:#00f, stroke-width: 2
  classDef external stroke:#63af3e,stroke-width: 2,stroke-dasharray: 4
  classDef group fill:#ffffa455, stroke:#ff7c7c, stroke-width: 2

  agent:::customer
  agent:::someclass
  website:::external
  openai:::external
  server:::group

  classDef animate stroke-dasharray: 20,stroke-dashoffset: 900,animation: dash 25s linear infinite;
  class l1 animate

  l2@{ animate: true }
  l3@{ animate: true }
  l4@{ animate: true }
  l5@{ animate: true }

可用工具

  • scrape_with_schema :
    • 标题:基于JSON模式从网站提取数据
    • 描述:导航并抓取给定的网站,以提取与提供的JSON模式结构匹配的数据。
    • 参数:
      • 网址:从中提取数据的网站的URL。
      • jsonSchema:描述要提取的数据结构的JSON模式。
      • 指示:指导如何进行刮擦的可选说明。
    • 只读:true

示例

配置后,您可以直接在任何MCP客户端中使用Skrapr的功能(克劳德桌面, n8n, Librechat, ...).

例如,你可以问克劳德:

Extract product information from all categories at https://example.com/products.
I want name, description and price for each product.

该模型创建了一个类似的模式并将其传递给Skrapr:

{
    "type":"object",
    "properties":{
        "products":{
            "type":"array",
            "items":{
                "type":"object",
                "properties":{
                    "name":{
                        "type":"string"
                    },
                    "price":{
                        "type":"string"
                    },
                    "description":{
                        "type":"string"
                    }
                }
            }
        }
    }
}

Scrapr将逐页浏览网站,直到找到所需的所有数据。

抓取后,您将收到以下响应:

{
    "products": [
        {
            "name": "Product 1",
            "price": "10",
            "description": "Description of product 1"
        },
        {
            "name": "Product 2",
            "price": "20",
            "description": "Description of product 2"
        }
    ]
}

MCP主机入门

对于典型的MCP主机集成(Claude Desktop),以下是设置方法:

和。净值:

{
  "mcpServers": {
    "skrapr": {
      "command": "dotnet",
      "args": [
        "run",
        "--project",
        "path/to/Skrapr/Skrapr.csproj"
        "-e", "AzureOpenAi__ApiKey=your-api-key", 
        "-e", "AzureOpenAi__Endpoint=https://your-resource.openai.azure.com/", 
        "-e", "AzureOpenAi__DeploymentName=your-deployment-name", 
        "-e", "PlaywrightMcp__IsLocal=true", 
      ]
    }
  }
}

使用Docker:

  1. 构建Docker镜像:

    docker build -t skrapr .
    
  2. 运行容器:

    docker run \
         -p 80:80 \
         -e AzureOpenAi__ApiKey=your-api-key \
         -e AzureOpenAi__Endpoint=https://your-resource.openai.azure.com/ \
         -e AzureOpenAi__DeploymentName=your-deployment-name \
         -e PlaywrightMcp__IsLocal=true \
         skrapr
    
  3. MCP服务器将在 http://localhost:5000.

  4. 您可以配置MCP主机

    {
      "mcpServers": {
        "skrapr": {
          "url": "http://localhost:5000/sse"
        }
      }
    }
    

使用云版本

我在云端托管一个Skrapr实例,并配置了所有内容。

如果你有兴趣尝试一下, 请在此处联系我 访问测试版。

    {
      "mcpServers": {
        "skrapr": {
          "url": "https://[ask-for-url]/sse"
        }
      }
    }

剧作家配置

剧作家可以在本地或远程执行。

本地

设置环境变量 PlaywrightMcp__IsLocal=true 将让剧作家在当地经营。

你需要安装Node.js才能正常工作。

使用 npx @playwright/mcp 经营剧作家。

远程

设置环境变量 PlaywrightMcp__Endpoint 将在远程主机上使用Playwright。

引擎盖下?

AI 代理

Skrapr在内部使用AI代理,旨在:

  • 了解网站结构和内容
  • 在网站上自主导航
  • 做出战略导航决策,以定位所请求的信息
  • 根据提供的JSON模式生成结构化的JSON结果。

技术栈

它使用:

感谢MCP(模型上下文协议),您可以将Skrapr连接到任何语言的代理。

为什么选择Skrapr?

在构建AI代理时,您可能希望代理能够轻松地从网站中提取信息。

目前,人工智能模型无法在本地导航网站。

存在简单的HTTP请求工具,但几乎没有限制:

  • 无javascript执行:无法读取动态内容
  • 信息可能不在加载的页面中,而是在子页面中

刮削工具也存在,但它们:

  • 加载大量信息(随机抓取)
  • 刮花了很多时间