> 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-lxml-she-zhi-ipwo-dai-li.md).

# 如何为 lxml 设置 IPWO 代理

lxml 是 Python 中高性能的 XML 和 HTML 解析库，广泛应用于网页数据提取、数据采集和自动化处理等场景。由于 lxml 本身不负责发送网络请求，因此通常配合 Requests 等 HTTP 库使用，并通过 Requests 配置 IPWO 动态住宅代理获取网页内容，再使用 lxml 进行解析。

***

### 一、准备工作

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

* 已安装 Python 3
* 已安装 lxml
* 已安装 Requests
* 已开通 IPWO 动态住宅代理
* 已创建 Zone
* 已获取代理用户名、密码和代理地址

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

```bash
pip install lxml requests
```

***

### 二、配置 IPWO 代理

使用 Requests 发送请求，并通过 `proxies` 参数配置 IPWO 代理。

示例代码：

```python
import requests
from lxml import html

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
)

tree = html.fromstring(response.text)

print(tree.xpath("//title/text()")[0])
```

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

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

***

### 三、解析网页内容

lxml 支持 XPath，非常适合提取网页中的结构化数据。

获取页面标题：

```python
title = tree.xpath("//title/text()")
print(title[0])
```

获取所有链接：

```python
links = tree.xpath("//a/@href")

for link in links:
    print(link)
```

获取指定元素：

```python
articles = tree.xpath("//div[@class='article']")

for article in articles:
    print(article.text_content())
```

通过 XPath 可以快速提取标题、链接、图片、列表等网页内容。

***

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

建议首次配置完成后，先访问 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 页面
* XPath 表达式是否正确
* 是否返回了验证码、重定向页面或错误页面

建议先输出：

```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)
