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

Python lxml通过XPath抓取加密货币价格出现IndexError如何解决

问题原因
  • XPath规则逻辑错误。你将价格数值0.00047061210058486165作为div的class属性值进行匹配,实际该数值是元素的文本内容,并非class属性,无法匹配到对应元素。
  • 目标站点数据为前端JavaScript动态渲染生成。直接使用requests请求获取的初始HTML源码中不存在渲染完成的价格数据,即便XPath规则正确也无法提取到内容。
  • 缺少空值校验逻辑。XPath查询不到对应元素时会返回空列表,直接取下标[0]会触发IndexError异常,需先判断列表长度再执行取值操作。
解决思路

优先选择通过站点公开API获取数据,稳定性远高于爬取前端页面;如果需要爬取页面内容,使用支持JS渲染的工具(如Selenium、Playwright)加载页面,等待元素渲染完成后再执行提取操作。

参考实现代码(基于Playwright)
from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    # 启动无头浏览器
    browser = p.chromium.launch(headless=True)
    page = browser.new_page()
    page.goto("https://dex.guru/token/0x68848e1d1ffd7b38d103106c74220c1ad3494afc-bsc")
    # 等待价格元素加载完成,选择器可通过浏览器F12元素检查工具调整为更稳定的规则
    price_locator = page.locator('//div[contains(text(),"$") and @class]/following-sibling::div[1]')
    price_locator.wait_for()
    print(price_locator.inner_text())
    browser.close()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 00:27:03