> ## Documentation Index
> Fetch the complete documentation index at: https://brightdata-ipv6-release.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# 工作线程类型

> 本文介绍了各种工作线程 (worker) 之间的行为差异，以及如何为您的项目选择合适的工作线程。

浏览器工作线程和代码工作线程是实现数据抓取的两大技术方法，您可根据自己的需求、预算以及抓取相关网站时面临的技术挑战，选择其中一种即可。

## 浏览器工作线程 vs 代码工作线程

**浏览器工作线程：**

* 可通过无头浏览器模拟用户与网站的交互
* 就 CPM（每千次页面加载成本）而言，浏览器工作线程的使用成本较高
* 用于处理复杂的抓取任务，例如填写表单和动态内容加载。

**代码工作线程：**

* 大致相当于执行 curl 或 Python `requests.get(url)` 请求
* 通过向目标网站发送 HTTP 请求来工作
* 更加经济便宜
* 只能在无需与网站用户界面进行交互的情况下使用

## 选择最佳工作线程

您应根据待抓取网站使用的技术以及抓取数据时所需采取的导航方式来选择适当的工作线程。

最好先使用更便宜的代码工作线程，且仅在发现无法获得所需数据的情况下才更改工作线程类型。

**例如：**

* 如果您需要点击元素以加载更多数据
* 如果您需要通过滚动来加载更多元素
* 如果您需要使用 `tag_script`、`tag_response` （从浏览器内部捕获网络流量）
* 如果您需要键入一些文本来获取网站数据以进行搜索

## 根据工作线程的类型调整代码

我们库中的一些函数仅可在浏览器工作线程中使用，如果您在代码工作线程中使用它们，则会引发错误。

以下列出了仅可在浏览器工作线程中使用的函数：

* `wait_*`（任何等待函数）
* `scroll_*` （任何滚动函数）
* `tag_*`（任何标签函数）
* `type`
* `browser_size`
* `emulate_device`
* `freeze_page`
* `click`
* `hover`
* `right_click`
* `mouse_to`
* `press_key`
* `solve_captcha`
* `capture_graphql`
* `close_popup`
