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

如何使用Python+Selenium检测网页指定字符串并判断查询结果可用性

Python + Selenium 网页字符串检测代码完善方案

核心修正点:

  • 原代码使用的find_elements_by_id返回的是元素列表,无匹配结果时仅返回空列表,不会触发NoSuchElementException,如果要使用异常捕获逻辑需要替换为单数find_element方法;Selenium 4.0+ 官方已废弃by_id这类旧写法,建议统一使用By类做元素定位
  • 需添加显式等待逻辑,避免页面未加载完成就提前检测元素,导致结果误判
  • 补充批量查询词循环、搜索框输入提交的完整流程逻辑

完整可运行示例代码

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
from selenium.common.exceptions import TimeoutException

# 初始化浏览器驱动
driver = webdriver.Chrome()
# 替换为你的目标站点地址
driver.get("https://替换为实际目标网站地址")

# 待批量检索的查询词列表
query_list = ["查询词1", "查询词2", "查询词3"]

for query in query_list:
    # 搜索框操作,将元素ID替换为你实际页面的搜索框定位规则
    search_box = driver.find_element(By.ID, "替换为搜索框实际ID")
    search_box.clear()
    search_box.send_keys(query)
    # 提交搜索,也可以替换为点击搜索按钮的逻辑
    search_box.submit()

    try:
        # 最多等待3秒,检测结果标识元素是否加载完成
        WebDriverWait(driver, 3).until(EC.presence_of_element_located((By.ID, "nres")))
        nres_elem = driver.find_element(By.ID, "nres")
        # 替换为你实际需要检测的不可用标识字符串
        if "不可用标识" in nres_elem.text:
            print(f"查询词【{query}】: no")
        else:
            print(f"查询词【{query}】: yes")
    # 超时未找到标识元素,说明返回可用状态
    except TimeoutException:
        print(f"查询词【{query}】: yes")

# 关闭浏览器
driver.quit()

简化版逻辑(仅判断元素是否存在,无需校验元素内文本)

如果你不需要判断元素内的具体文本,只需要判断id=nres的元素是否存在即可判定状态,可以用更简洁的写法:

for query in query_list:
    # 搜索提交逻辑同上,此处省略
    nres_list = driver.find_elements(By.ID, "nres")
    # 存在该元素则为不可用,否则为可用
    if len(nres_list) > 0:
        print(f"查询词【{query}】: no")
    else:
        print(f"查询词【{query}】: yes")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 04:45:02