You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用requests-html爬取免费代理IP返回空列表的解决方法求助

问题原因及修复方案

核心错误原因

resp.html.find("data-ip")的参数格式错误:
requests-html的find()方法默认传入的是HTML标签名,该写法会搜索页面中所有<data-ip>标签,而实际IP存储在普通元素的data-ip自定义属性中,需要用属性选择器语法[data-ip]匹配所有携带该属性的元素。

补充优化项

  • 新增User-Agent请求头模拟浏览器访问,避免站点拦截无标识的爬虫请求
  • 渲染时添加sleep参数等待页面资源加载完成,避免未渲染完成就开始解析
  • 匹配到元素后需要通过attrs属性提取data-ip的值,才能拿到最终的IP内容

修正后可运行代码

from requests_html import HTMLSession

# 创建HTML会话对象
session = HTMLSession()
# 模拟浏览器请求头
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
}

resp = session.get("https://advanced.name/freeproxy", headers=headers)
# 渲染JS,sleep参数控制渲染后等待时间,可根据网络情况调整
resp.html.render(sleep=2)

# 用属性选择器匹配所有带data-ip属性的元素
ip_elements = resp.html.find("[data-ip]")
# 提取所有IP值
ip_list = [element.attrs["data-ip"] for element in ip_elements]
print(ip_list)

注意事项

  • 首次运行render()方法时,requests-html会自动下载适配的Chromium内核,需要等待下载完成后才会正常执行渲染,不要中途终止程序
  • 代理站点普遍有反爬策略,多次请求失败可间隔一段时间再尝试

内容的提问来源于stack exchange,提问作者PythonC

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.15 10:00:06