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

如何用Python的Selenium提取波斯语文本?变量为空问题求助

解决Selenium提取波斯语文本为空的问题

问题原因排查

  1. 元素未完全加载:页面渲染速度慢,代码执行时目标元素还没完成渲染,导致获取到的text为空。
  2. XPATH定位稳定性不足:依赖固定href或父级class的定位方式,可能因页面结构变动失效;从截图看目标是卖家名称,可换更精准的定位逻辑。
  3. 编码处理冗余:Selenium获取的text本身就是Unicode字符串,额外执行encode("utf-8")属于冗余操作,还可能引发显示异常。

修复后的代码示例

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

website = "https://www.digikala.com/product/dkp-3628808/%D8%B1%D9%88%D8%BA%D9%86-%D8%B2%DB%8C%D8%AA%D9%88%D9%86-%D8%A8%DB%8C-%D8%A8%D9%84-%DA%A9%D8%B1%DB%8C%D8%B3%D8%AA%D8%A7%D9%84-%D8%B7%D9%84%D8%A7%DB%8C%DB%8C-3000-%D9%85%DB%8C%D9%84%DB%8C-%D9%84%DB%8C%D8%AA%D8%B1/"
driver = webdriver.Chrome(executable_path=r"C:\Users\Qazal\anaconda3\Lib\site-packages\selenium\chromedriver.exe")
driver.get(website)

# 显式等待元素加载完成,最长等待10秒
wait = WebDriverWait(driver, 10)
# 改用卖家名称容器的特征定位,适配页面结构变动
name_element = wait.until(EC.visibility_of_element_located((By.XPATH, '//div[contains(@class, "seller-info-name")]//a')))
name = name_element.text

print(name)
driver.quit()

额外建议

  • 避免用固定href值定位,页面更新后该值可能变化,优先选择包含业务特征的class属性或文本特征定位。
  • 若页面有动态加载内容,用EC.visibility_of_element_located代替presence_of_element_located,确保元素可见后再获取文本。
  • 输出波斯语文本时,确认终端支持UTF-8编码,避免出现乱码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 17:55:47