> For the complete documentation index, see [llms.txt](https://docs.ipwo.net/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.ipwo.net/ji-cheng-jiao-cheng/gong-ju-yu-dai-li-ruan-jian/ru-he-wei-pyquery-she-zhi-ipwo-dai-li.md).

# 如何为 PyQuery 设置 IPWO 代理

PyQuery 是一个基于 jQuery 语法设计的 Python HTML 解析库，能够像操作 jQuery 一样解析和提取网页内容，广泛应用于数据采集、网页信息提取和自动化任务。由于 PyQuery 本身不负责发送网络请求，因此通常配合 Requests 等 HTTP 库使用，并通过 Requests 配置 IPWO 动态住宅代理完成网页访问。

***

### 一、准备工作

开始配置前，请确保已完成以下准备：

* 已安装 Python 3
* 已安装 PyQuery
* 已安装 Requests
* 已开通[ IPWO 动态住宅代理](/dai-li-chan-pin/dong-tai-zhu-zhai-dai-li.md)
* 已创建 Zone
* 已获取代理用户名、密码和代理地址

如果尚未安装相关依赖，可执行：

```bash
pip install pyquery requests
```

***

### 二、配置 IPWO 代理

使用 Requests 获取网页内容，再交由 PyQuery 进行解析。

示例代码：

```python
import requests
from pyquery import PyQuery as pq

proxies = {
    "http": "http://username_custom_zone_us:password@us.ipwo.net:7878",
    "https": "http://username_custom_zone_us:password@us.ipwo.net:7878"
}

response = requests.get(
    "https://example.com",
    proxies=proxies,
    timeout=15
)

doc = pq(response.text)

print(doc("title").text())
```

请根据自己的账户信息替换以下内容：

| 参数                         | 说明      |
| -------------------------- | ------- |
| username\_custom\_zone\_us | 代理用户名   |
| password                   | 代理密码    |
| us.ipwo.net                | 代理服务器地址 |
| 7878                       | 代理端口    |

***

### 三、解析网页内容

PyQuery 提供了类似 jQuery 的选择器语法，可以快速提取网页元素。

获取所有链接：

```python
for item in doc("a").items():
    print(item.attr("href"))
```

获取文章标题：

```python
print(doc("h1").text())
```

获取指定内容：

```python
for article in doc(".article").items():
    print(article.text())
```

这种写法与前端开发常用的 jQuery 语法类似，学习成本较低。

***

### 四、测试代理是否生效

建议首次配置完成后，先访问 IP 检测接口验证代理是否生效。

示例：

```python
import requests

proxies = {
    "http": "http://username_custom_zone_us:password@us.ipwo.net:7878",
    "https": "http://username_custom_zone_us:password@us.ipwo.net:7878"
}

response = requests.get(
    "https://ipinfo.io/json",
    proxies=proxies
)

print(response.json())
```

正常情况下会返回类似结果：

```json
{
  "ip": "203.0.113.10",
  "country": "US"
}
```

如果返回的公网 IP 已发生变化，并且国家地区符合配置，则说明代理已经配置成功。

***

### 五、固定 Session（可选）

如果业务需要保持同一个出口 IP，可以在用户名中增加 Session 参数。

例如：

```
username_custom_zone_us_session_123456
```

使用相同的 Session 发起请求时，会尽可能保持同一个住宅 IP，适用于账号登录、连续访问和长期采集等业务场景。

更多内容可参考《[Session 使用说明](/kai-fa-zhe-wen-dang/api-shi-yong-zhi-nan/session-shi-yong-shuo-ming.md)》。

***

### 六、使用建议

为了获得更稳定的采集效果，建议：

* 为请求设置合理的超时时间
* 控制请求频率，避免短时间大量访问
* 登录类业务建议使用固定 Session
* 根据目标业务选择对应国家地区
* 增加 Retry 重试机制，提高请求成功率
* 采集大量页面时适当增加请求间隔

***

### 七、常见问题

#### [返回 407](/gu-zhang-pai-chu/dai-li-407-cuo-wu.md) Proxy Authentication Required

请检查：

* 用户名是否正确
* 密码是否正确
* Zone 是否配置正确

***

#### [请求超时（Timeout）](/gu-zhang-pai-chu/chao-shi-timeout.md)

请检查：

* 当前网络是否能够访问代理节点
* timeout 设置是否过低
* 网络连接是否稳定

***

#### 页面解析失败

请检查：

* 请求是否成功返回 HTML 页面
* 目标网站是否启用了反爬机制
* 是否返回了验证码或错误页面

建议先输出：

```python
print(response.status_code)
print(response.text)
```

确认返回内容正常后，再进行页面解析。

***

#### 返回的 IP 未变化

请确认：

* `proxies` 参数是否正确配置
* 用户名、密码是否填写正确
* 请求是否真正通过代理发送

***

#### 八、相关文章

* [如何为 Python Requests 设置 IPWO 代理](/ji-cheng-jiao-cheng/gong-ju-yu-dai-li-ruan-jian/ru-he-wei-python-requests-she-zhi-ipwo-dai-li.md)
* [如何为 Beautiful Soup 设置 IPWO 代理](/ji-cheng-jiao-cheng/gong-ju-yu-dai-li-ruan-jian/ru-he-wei-beautiful-soup-she-zhi-ipwo-dai-li.md)
* [如何为 urllib3 设置 IPWO 代理](/ji-cheng-jiao-cheng/gong-ju-yu-dai-li-ruan-jian/ru-he-wei-urllib3-she-zhi-ipwo-dai-li.md)
* [如何为 HTTPX 设置 IPWO 代理](/ji-cheng-jiao-cheng/gong-ju-yu-dai-li-ruan-jian/ru-he-wei-httpx-she-zhi-ipwo-dai-li.md)
* [Session 使用说明](/kai-fa-zhe-wen-dang/api-shi-yong-zhi-nan/session-shi-yong-shuo-ming.md)
* [请求最佳实践](/kai-fa-zhe-wen-dang/api-shi-yong-zhi-nan/qing-qiu-zui-jia-shi-jian.md)
* [如何检测代理是否生效](/dai-li-jian-ce-yu-yin-si-an-quan/ru-he-jian-ce-dai-li-shi-fou-sheng-xiao.md)
