# AI网络抓取：LLM提取、Prompt-to-JSON与成本

LLM提取通过简单的英语提示将任何页面转换为干净的JSON——无需维护选择器。但模型无法抓取页面，原始HTML会快速消耗tokens。以下是正确的做法。

AI网络抓取意味着将语言模型指向页面，并用简单的英语请求你想要的字段作为JSON返回——无需编写CSS选择器，当布局变化时也无需维护解析器。这对于混乱、多样或一次性提取来说确实具有变革性。但它也常被误解，这就是为什么人们最终为抓取几百个页面付费却得到幻觉数据。两个事实解决了大部分困惑：语言模型无法抓取网页——它只能对你提供的文本进行推理——而将原始HTML输入模型是最快消耗token预算的方式。本指南涵盖了有效的提取模式，何时优于选择器，以及如何控制成本和幻觉。

## 没人说的事情：模型无法抓取

AI抓取的难点不在于AI。聊天机器人无法可靠地加载实时页面——它需要一个专用引擎先抓取HTML，然后对你提供的文本进行推理。因此，LLM提取管道实际上是一个在末端附加了智能解析器的抓取管道，而抓取部分是问题所在：机器人管理、JavaScript渲染、IP封锁。通过代理和渲染层解决抓取问题，提取就变得简单了。获取页面的干净方式是使用一个[scraper API](https://quantumproxies.io/scraper-api)，它处理轮换和渲染并返回markdown，正如下一节所示，这也是模型最便宜的输入：

```python
import requests

def fetch_markdown(url, api_key):
    r = requests.post(
        "https://api.quantumproxies.io/v1/scraper/extract",
        headers={"Authorization": f"Bearer {api_key}"},
        json={"url": url, "format": "markdown"},
        timeout=(5, 120),
    )
    r.raise_for_status()
    return r.json()["payload"]["content"]  # nav/ads stripped, ready for the model
```

## 为什么是markdown而不是HTML是实际的成本杠杆

AI抓取成本的最大驱动因素是你通过模型推送了多少tokens，而原始HTML大多是你不需要的tokens：内联样式、脚本标签、跟踪属性、导航、页脚。在提取前将页面转换为干净的markdown——或仅提取主要内容——你通常可以将输入大小减少一个数量级，从而以同样的比例降低成本，并且作为额外的好处，减少幻觉，因为模型看到的是内容而不是页面装饰。这就是为什么markdown优先是为模型提供输入的标准，这与[为LLMs提供新鲜网页数据](https://quantumproxies.io/blog/feeding-llms-fresh-web-data-2026)的原则相同。如果你从这篇文章中只学到一件事：永远不要将原始页面源代码发送给模型。

![四个阶段的 LLM 提取流水线：通过代理和渲染层抓取页面，清洗为 markdown，用 schema 提示模型并要求字段缺失时返回 null，然后校验 JSON；卡片指出，markdown 能让输入减少一个数量级，而原始 HTML 消耗的 token 可能多出十倍。](https://res.cloudinary.com/dmqliab0t/image/upload/f_auto,q_auto,w_1200/v1785335211/blog/generated/qp-b9-084-diag1.png)
*模型从未接触实时网络。抓取和清理首先进行，markdown减少token费用，schema保持JSON的准确性。*

## 使用schema的Prompt-to-JSON

一旦你有了干净的文本，提取就是一个简单的调用：描述你想要的字段，传递一个schema以便输出结构化，并指示模型在字段缺失时返回null而不是虚构。一个[提取API](https://quantumproxies.io/extract-api)将抓取、清理和提取合并为一个请求，因此你可以完全跳过管道：

```bash
curl -X POST "https://api.quantumproxies.io/v1/scraper/extract" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com/product/xyz",
    "ai_schema": {
      "type": "object",
      "properties": {
        "title":    {"type": "string"},
        "price":    {"type": "number"},
        "in_stock": {"type": "boolean"},
        "rating":   {"type": ["number", "null"]}
      },
      "required": ["title", "price", "in_stock"]
    },
    "ai_prompt": "Extract the product. Use null for anything not present."
  }'
```

schema有双重作用：它为下游代码强制一个可预测的形状，并限制模型，这是防止虚构字段的第一道防线。根据相同的schema验证响应，并拒绝任何不符合的内容——虚构的价格比缺失的价格更糟糕。

```python
def validate(record, schema):
    for field in schema.get("required", []):
        if record.get(field) is None:
            raise ValueError(f"missing required field: {field}")
    return record  # only trust records that satisfy the schema
```

## 何时LLM提取优于CSS选择器——何时不优

AI提取不是一个普遍的升级；它是一个不同的工具，具有不同的成本曲线。当工作多样或不稳定时使用它——抓取一千个布局不同的网站，一个不断重新设计的网站，像评论或列表这样的非结构化内容没有干净的选择器，或一次性工作不值得编写选择器。当你在高容量稳定网站上工作时，坚持使用CSS或XPath选择器：选择器是确定性的，每页几乎免费，并且从不产生幻觉。成熟的模式是混合的——选择器用于高容量核心目标，LLM提取用于长尾和不断变化的网站。

成本纪律将其从实验转变为生产。除了markdown优先，积极缓存以避免重新提取未更改的页面，匹配模型大小与任务难度——小模型可以很好地处理简单字段提取——并在API允许的情况下批量处理。渲染是其自身的项目；只有在页面真正需要JavaScript时才渲染，这一决策我们在[何时必须渲染](https://quantumproxies.io/blog/headless-browser-vs-http-requests-cost)中量化。获取空白页面而不是内容，通常的修复是渲染，这在[空白页面，缺失数据](https://quantumproxies.io/blog/scraper-returns-empty-page-javascript)中涵盖。

关于免费和开源路线的一句话，因为这是大多数人首先搜索的。开源提取库非常适合学习模式和小型工作，但它们将你带回本文开头的两个难题：你仍然需要在机器人管理后抓取页面，并且你仍然需要支付执行提取的模型费用。“免费”通常意味着免费代码加上你自己的代理和token费用。这对于业余项目或概念验证来说是一个不错的交易；在生产量级上，抓取层的维护正是团队最终外包的内容，这是我们在[自建抓取堆栈与scraper API](https://quantumproxies.io/blog/build-vs-buy-scraping-infrastructure)中所述的构建与购买的选择。

![LLM 提取与 CSS 选择器并排对比：LLM 能应对各种网站，网站改版后依然可用；选择器适合大批量抓取单个稳定网站，结果确定且成本低；卡片把上千种布局和频繁改版归到 LLM 提取，把单个稳定目标归到选择器，而大多数流水线两者兼用。](https://res.cloudinary.com/dmqliab0t/image/upload/f_auto,q_auto,w_1200/v1785335212/blog/generated/qp-b9-084-diag2.png)
*LLM提取在多样和变化的网站上胜出；选择器在一个稳定的高容量目标上胜出。大多数实际管道同时运行两者。*

## 常见问题

### ChatGPT可以抓取网站吗？

不能单独完成。语言模型无法可靠地抓取和渲染实时页面——它对你提供的文本进行推理。要使用AI进行抓取，你需要将一个专用的抓取引擎（抓取并清理页面）与模型配对，模型从结果中提取结构化数据。抓取引擎处理代理、渲染和阻止；模型负责将内容转换为JSON。

### 如何降低AI网络抓取的成本？

在发送任何内容给模型之前，将页面转换为markdown或提取主要内容——原始HTML可能是相同信息的十倍tokens。然后缓存未更改的页面，使用较小的模型进行简单字段提取，仅在页面需要时渲染JavaScript，并批量处理请求。token量是主要成本，因此减少输入大小是最高杠杆的优化。

### AI网络抓取会幻觉错误数据吗？

可能会，尤其是在输入嘈杂的原始HTML或请求页面上不存在的字段时。通过清理输入、传递明确的schema、指示模型在值缺失时返回null以及在信任之前根据该schema验证每个响应来防止这种情况。缺失的字段可以重试；自信地虚构的字段会默默地破坏你的数据集。

### LLM提取比CSS选择器更好吗？

这取决于工作。LLM提取在布局变化频繁或编写选择器不值得时胜出，因为它不需要选择器并能适应重新设计。CSS选择器在单一稳定网站上高容量时胜出：它们是确定性的，每页成本更低。大多数生产管道使用选择器作为核心目标，LLM提取用于长尾。

一旦你停止将模型视为抓取器，AI网络抓取就变得强大。通过代理干净地抓取，提供markdown而不是HTML，用schema限制输出，并将LLM提取保留给其灵活性值得其token成本的工作。这是流畅演示与每日运行管道之间的区别。

[使用Extract API将任何页面转换为JSON](https://quantumproxies.io/extract-api)
