如何用Python的Selenium提取波斯语文本?变量为空问题求助
解决Selenium提取波斯语文本为空的问题
问题原因排查
- 元素未完全加载:页面渲染速度慢,代码执行时目标元素还没完成渲染,导致获取到的
text为空。 - XPATH定位稳定性不足:依赖固定
href或父级class的定位方式,可能因页面结构变动失效;从截图看目标是卖家名称,可换更精准的定位逻辑。 - 编码处理冗余: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
相关产品推荐
相关产品推荐

