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

Selenium报错修复:Virustotal提取数据并保存至TXT文件

问题修复方案

错误原因分析

  • 定位方式误用:By.CLASS_NAME仅支持传入单个类名(如'positives'),你传入的'div > div > div.positives'是CSS选择器语法,必须搭配By.CSS_SELECTOR使用。
  • 等待方式不严谨:使用time.sleep(5)属于强制等待,可能因网络或页面加载慢导致元素未就绪,建议改用显式等待确保元素可被定位。

修复后的完整代码

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

driver = webdriver.Chrome()
driver.get("https://www.virustotal.com/gui/home/search")
driver.maximize_window()

wait = WebDriverWait(driver, 15)
# 定位搜索框(保留原shadow DOM定位逻辑)
search_input = wait.until(EC.element_to_be_clickable((driver.execute_script("return document.querySelector('home-view').shadowRoot.querySelector('vt-ui-search-bar').shadowRoot.querySelector('input#searchInput')"))))
search_input.send_keys("759b1fcbdf4ad54bb8adc2c060df8ab5")
search_input.send_keys(Keys.RETURN)

# 显式等待目标元素加载完成,使用CSS选择器定位
result = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, 'div.positives')))
result_text = result.text.strip()  # 去除文本前后空白字符

# 写入文件
with open('output.txt', 'a') as f:
    f.write(result_text)
    f.write('\n' * 10)

driver.quit()

关键修改点说明

  1. 替换定位方式:将By.CLASS_NAME改为By.CSS_SELECTOR,参数使用'div.positives'(若页面层级复杂,可使用更精确的'div > div > div.positives')。
  2. 改用显式等待:用WebDriverWait配合presence_of_element_located等待元素出现,替代time.sleep,提升代码稳定性。
  3. 文本处理:添加strip()去除文本前后的空白字符,确保提取的数值干净。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 11:10:29