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

LXML 4.9.2版本XPath方法无法使用的技术求助

解决lxml中xpath方法不存在的问题

问题1:解析requests返回的文本字符串时用错方法

你第一个代码里的etree.parse(main_page_text)是错误用法,etree.parse()用于解析文件路径/文件对象,不能直接传入HTML文本字符串。正确做法是用etree.HTML()来解析字符串内容:

修正后的代码:

from lxml import etree
import requests

main_page_text = requests.get(url=main_page_url, headers=headers).text  
etree_obj = etree.HTML(main_page_text)  # 替换parse为HTML
result = etree_obj.xpath('//你需要的XPath表达式')  # 补充具体的XPath规则

问题2:解析本地HTML文件时的潜在问题

第二个代码中如果tree.xpath()依然报错,可排查以下点:

  • 文件路径问题:确保test.html在当前Python脚本的工作目录下,或者传入完整绝对路径,示例:
    tree = etree.parse('/Users/xxx/Desktop/test.html', parser=parser)
    
  • 文件编码不匹配:如果HTML文件实际编码不是utf-8,调整HTMLParser的encoding参数,或者手动读取文件后解析:
    from lxml import etree
    
    with open('test.html', 'r', encoding='gbk') as f:  # 根据文件实际编码调整
        html_content = f.read()
    tree = etree.HTML(html_content)
    r = tree.xpath('//div/text()')
    

关键说明

etree.HTML()返回的元素对象自带xpath()方法,而etree.parse()返回的是ElementTree对象——虽然它本身也支持xpath(),但如果传入错误参数(比如直接传文本字符串而非文件),会导致解析失败,进而出现方法不可用的假象。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 00:44:56