# Python SDK

<figure><img src="https://github.com/oxylabs/oxylabs-ai-studio-py/raw/main/Ai-Studio2.png" alt=""><figcaption></figcaption></figure>

[![](https://camo.githubusercontent.com/ec456302fbdba5490012a0bc8d2739619d0e57dd8840197d06b33b9ea3b35bda/68747470733a2f2f646362616467652e6c696d65732e70696e6b2f6170692f7365727665722f5064733367426d4b4d483f7374796c653d666f722d7468652d6261646765267468656d653d646973636f7264)](https://discord.gg/Pds3gBmKMH) [![YouTube](https://camo.githubusercontent.com/1b748ffea39adfb777030373ce78d8bc07d3625a9039b324bcbc708a91f376c1/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f596f75547562652d4f78796c6162732d7265643f7374796c653d666f722d7468652d6261646765266c6f676f3d796f7574756265266c6f676f436f6c6f723d7768697465)](https://www.youtube.com/@oxylabs)

我们提供一个简单的 Python SDK，用于无缝与 [Oxylabs AI Studio API](https://aistudio.oxylabs.io/) 服务交互，包括 AI-Scraper、AI-Crawler、AI-Browser-Agent 以及其他数据提取工具。

## 要求

* python 3.10 及以上
* AI Studio API 密钥

## 安装

```
pip install oxylabs-ai-studio
```

## 用法

### 爬取 (`AiCrawler.crawl`)

```python
from oxylabs_ai_studio.apps.ai_crawler import AiCrawler

crawler = AiCrawler(api_key="<API_KEY>")

url = "https://oxylabs.io"
result = crawler.crawl(
    url=url,
    user_prompt="查找所有包含代理产品定价的页面",
    output_format="markdown",
    render_javascript=False,
    return_sources_limit=3,
    geo_location="US",
)
print("结果:")
for item in result.data:
    print(item, "\n")
```

#### **输入参数**

* `url` (str): 开始爬取的 URL (**必需**)
* `user_prompt` (str): 用于指导提取的自然语言提示 (**必需**)
* `output_format` (Literal\["json", "markdown"]): 输出格式（默认: "markdown"）
* `schema` (dict | None): 用于结构化提取的 OpenAPI schema（如果 output\_format 为 "json" 则必需）
* `render_javascript` (bool): 是否渲染 JavaScript（默认: False）
* `return_sources_limit` (int): 返回的最大来源数量（默认: 25）
* `geo_location` (str): 以 ISO2 格式表示的代理位置。

### 抓取 (`AiScraper.scrape`)

```python
from oxylabs_ai_studio.apps.ai_scraper import AiScraper

scraper = AiScraper(api_key="<API_KEY>")

schema = scraper.generate_schema(prompt="想要解析 developer, platform, type, price game title, genre (array) and description")
print(f"生成的 schema: {schema}")

url = "https://sandbox.oxylabs.io/products/3"
result = scraper.scrape(
    url=url,
    output_format="json",
    schema=schema,
    render_javascript=False,
)
print(result)
```

#### **输入参数**

* `url` (str): 要抓取的目标 URL (**必需**)
* `output_format` (Literal\["json", "markdown"]): 输出格式（默认: "markdown"）
* `schema` (dict | None): 用于结构化提取的 OpenAPI schema（如果 output\_format 为 "json" 则必需）
* `render_javascript` (bool): 是否渲染 JavaScript（默认: False）
* `geo_location` (str): 以 ISO2 格式表示的代理位置。

### 浏览器代理 (`BrowserAgent.run`)

```python
from oxylabs_ai_studio.apps.browser_agent import BrowserAgent

browser_agent = BrowserAgent(api_key="<API_KEY>")

schema = browser_agent.generate_schema(
    prompt="游戏名称、平台、评分星级和价格"
)
print("schema: ", schema)

prompt = "查找商店中是否有游戏 'super mario odyssey'。如果有，找出价格。使用搜索栏查找该游戏。"
url = "https://sandbox.oxylabs.io/"
result = browser_agent.run(
    url=url,
    user_prompt=prompt,
    output_format="json",
    schema=schema,
)
print(result.data)
```

#### **输入参数**

* `url` (str): 开始浏览的 URL (**必需**)
* `user_prompt` (str): 用于提取的自然语言提示 (**必需**)
* `output_format` (Literal\["json", "markdown", "html", "screenshot"]): 输出格式（默认: "markdown"）
* `schema` (dict | None): 用于结构化提取的 OpenAPI schema（如果 output\_format 为 "json" 则必需）
* `geo_location` (str): 以 ISO2 格式表示的代理位置。

### 搜索 (`AiSearch.search`)

```python
from oxylabs_ai_studio.apps.ai_search import AiSearch


search = AiSearch(api_key="<API_KEY>")

query = "千层面 食谱"
result = search.search(
    query=query,
    limit=5,
    render_javascript=False,
    return_content=True,
)
print(result.data)
```

#### **输入参数**

* `query` (str): 要搜索的内容 (**必需**)
* `limit` (int): 返回的最大结果数量（默认: 10，最大值: 50）
* `render_javascript` (bool): 是否渲染 JavaScript（默认: False）
* `return_content` (bool): 是否在结果中返回 markdown 内容（默认: True）
* `geo_location` (str): 以 ISO2 格式表示的搜索代理位置。

#### 地图 (`AiMap.map`)

```python
from oxylabs_ai_studio.apps.ai_map import AiMap


ai_map = AiMap(api_key="<API_KEY>")
payload = {
    "url": "https://career.oxylabs.io",
    "user_prompt": "招聘广告页面",
    "return_sources_limit": 10,
    "geo_location": None,
    "render_javascript": False,
}
result = ai_map.map(**payload)
print(result.data)
```

#### **输入参数**

* `url` (str): 开始爬取的 URL (**必需**)
* `user_prompt` (str): 用于指导提取的自然语言提示 (**必需**)
* `render_javascript` (bool): 是否渲染 JavaScript（默认: False）
* `return_sources_limit` (int): 返回的最大来源数量（默认: 25）
* `geo_location` (str): 以 ISO2 格式表示的代理位置。

### 使用示例

请参见 [示例](https://github.com/oxylabs/oxylabs-ai-studio-py/tree/main/examples) 文件夹中包含每个方法的使用示例。&#x20;

每个方法都有对应的异步版本。
