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

使用TeleBot+LXML XPath提取HTML Div文本失败,变量为空求助

正确提取页面目标文本的解决方案

问题根源

  1. 浏览器自动生成的XPath会补全<tbody>标签,但该页面的原始HTML中并没有这个节点,导致路径完全匹配失败
  2. 你的XPath错误包含了不存在的index节点,这是提取结果为空的核心原因

修正后的代码

import telebot
import requests
import lxml.html

bot = telebot.TeleBot('你的机器人Token')

@bot.message_handler(content_types=['text'])
def get_text_messages(message):
    api = requests.get("https://slovardalja.net/word.php?wordid=21880")
    tree = lxml.html.document_fromstring(api.text)
    # 基于class定位目标容器,路径更稳定
    text_original = tree.xpath('//div[@class="word-main"]/p[1]/strong/text()')
    # 处理提取结果,避免空列表报错
    result = text_original[0] if text_original else "未找到目标文本"
    print(result)
    bot.send_message(message.chat.id, result)
    
bot.polling(none_stop=True, interval=0)

关键说明

  • 放弃依赖绝对层级的XPath,改用//div[@class="word-main"]直接定位目标文本所在的父容器,这种方式不受页面层级小幅度调整的影响,稳定性更高
  • 移除了浏览器自动补的<tbody>和错误的index节点,确保路径与页面真实HTML结构一致
  • 增加了空结果判断,避免提取失败时给用户发送空内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 16:35:34