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

Selenium获取企业SSIC描述时触发TimeoutException问题求助

解决Selenium检索SSIC时的TimeoutException错误

问题根源

你的TimeoutException本质是CSS选择器错误:
原选择器.bizpara1 text_uppercase会查找带有bizpara1类的元素下的<text_uppercase>标签,但实际目标元素是同时拥有bizpara1和text_uppercase两个类的<span>标签。正确的多类选择器应该用点连接且无空格:.bizpara1.text_uppercase。

稳定性优化建议

除了修正选择器,还可以做这些调整提升代码可靠性:

  • 延长等待时间到15秒,应对目标网站可能的加载延迟
  • 输入UEN前先清空输入框,避免残留内容干扰
  • 获取元素的text属性而非直接打印元素对象,得到实际的SSIC描述
  • 添加异常处理,防止单个UEN查询失败中断整个流程
  • 循环结束后关闭浏览器释放资源

修正后的完整代码

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

d = webdriver.Chrome()
search = ['199904446R', '200514781N', '198500528C']

try:
    for UEN in search: 
        d.get('https://www.tis.bizfile.gov.sg/ngbtisinternet/faces/oracle/webcenter/portalapp/pages/TransactionMain.jspx?selectedETransId=dirSearch')
        
        # 等待输入框加载完成,清空后输入UEN
        input_box = WebDriverWait(d, 15).until(EC.visibility_of_element_located((By.ID, "pt1:r1:0:sv1:it1::content")))
        input_box.clear()
        input_box.send_keys(UEN)
        
        # 等待提交按钮可点击后点击
        submit = WebDriverWait(d, 15).until(EC.element_to_be_clickable((By.ID, "pt1:r1:0:sv1:cb1")))
        submit.click()
        
        # 等待SSIC元素加载并获取文本内容
        ssic_element = WebDriverWait(d, 15).until(EC.visibility_of_element_located((By.CSS_SELECTOR, ".bizpara1.text_uppercase")))
        print(f"UEN {UEN} 的SSIC描述: {ssic_element.text}")
finally:
    d.quit()

额外排查点

如果修正后仍报错,可检查以下内容:

  • 网站是否存在iframe:通过d.find_elements(By.TAG_NAME, "iframe")确认,若有则需先切换到对应iframe再查找元素
  • 是否触发反爬机制:可尝试添加短时间随机延迟(如import time; time.sleep(2)),但优先使用显式等待而非强制等待

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 05:53:17