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

Selenium+Python循环输出重复、多URL遍历及数据输出异常问题求助

问题排查与修复方案

问题根源

  • 遍历URL逻辑错误:数据提取代码全部放在URL遍历循环外部,遍历阶段仅执行页面跳转和加载等待,全部URL跳转完成后driver停在最后一个URL页面,仅执行一次数据提取,因此只能拿到第二个URL的结果。
  • 冗余嵌套循环:for page in range(0, 1) 仅会执行1次(range规则为左闭右开,0到1区间仅包含数值0),无实际作用可直接删除,若观测到重复迭代为其他逻辑残留导致。
  • 无效数据遍历:原代码中遍历audited-url__link元素的逻辑无实际作用,每个页面仅对应一个待抓取的URL指标,无需额外遍历。

修复后完整代码

# 提前导入所需依赖
import pandas as pd
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

urls = [
    'https://developers.google.com/speed/pagespeed/insights/?url=https://www.crutchfield.com/%2F&tab=mobile',
    'https://developers.google.com/speed/pagespeed/insights/?url=https://www.lastpass.com%2F&tab=mobile'
]

driver = webdriver.Chrome(executable_path='/Library/Frameworks/Python.framework/Versions/3.9/bin/chromedriver')
# 全局初始化DataFrame,避免循环内重复覆盖
df = pd.DataFrame(columns = ['Title', 'Core Web Vitals', 'FCP', 'FID', 'CLS', 'TTI', 'TBT', 'Total Score'])

for url in urls:
    driver.get(url)
    # 等待页面核心元素加载完成
    WebDriverWait(driver, 120).until(EC.presence_of_element_located((By.CLASS_NAME, 'origin-field-data')))
    
    # 直接提取当前页面指标数据
    title = driver.find_element_by_xpath('//*[@id="page-speed-insights"]/div[2]/div[3]/div[2]/div[1]/div[1]/div/div[2]/h1/a')
    co_name = title.text

    cwv = driver.find_element_by_xpath('//*[@id="page-speed-insights"]/div[2]/div[3]/div[2]/div[1]/div[2]/div/div[1]/div[1]/div[1]/span[2]')
    core_web = cwv.text

    fcp = driver.find_element_by_xpath('//*[@id="page-speed-insights"]/div[2]/div[3]/div[2]/div[1]/div[2]/div/div[1]/div[1]/div[2]/div[1]/div[1]/div')
    first_content = fcp.text

    fid = driver.find_element_by_xpath('//*[@id="page-speed-insights"]/div[2]/div[3]/div[2]/div[1]/div[2]/div/div[1]/div[1]/div[2]/div[3]/div[1]/div')
    first_input = fid.text

    cls = driver.find_element_by_xpath('//*[@id="page-speed-insights"]/div[2]/div[3]/div[2]/div[1]/div[2]/div/div[1]/div[1]/div[2]/div[4]/div[1]/div')
    layout_shift = cls.text

    tti = driver.find_element_by_xpath('//*[@id="interactive"]/div/div[1]')
    time_interactive = tti.text

    tbt = driver.find_element_by_xpath('//*[@id="total-blocking-time"]/div/div[1]')
    total_block = tbt.text

    total_score = driver.find_element_by_xpath('//*[@id="page-speed-insights"]/div[2]/div[3]/div[2]/div[1]/div[1]/div/div[1]/a/div[2]')
    score = total_score.text

    # 写入当前行数据
    df.loc[len(df)] = [co_name,core_web,first_content,first_input,layout_shift,time_interactive,total_block,score]
        
driver.close()

# df.to_csv('Double Page Speed Test 9-10.csv')
print(df)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 06:06:04