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

如何用Selenium抓取网站数据?DevTools日志含义咨询

DevTools日志含义与Selenium抓取MLS球员数据指南

一、DevTools日志的意思

这条日志是正常的系统提示,说明Selenium成功启动了Chrome浏览器,并且通过WebSocket(ws://地址)和Chrome的开发者工具(DevTools)建立了连接。这个连接是Selenium控制浏览器的底层通信通道,不属于错误信息,完全可以忽略。

二、用Selenium抓取目标网站表格数据的完整步骤

1. 前期准备

  • 安装Selenium:在终端执行 pip install selenium
  • (可选但推荐)安装webdriver-manager自动管理ChromeDriver:pip install webdriver-manager,这样不用手动下载匹配浏览器版本的驱动文件

2. 可运行的代码示例

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
import pandas as pd

# 目标页面URL
target_url = 'https://www.mlssoccer.com/stats/players/#season=2023&competition=mls-regular-season&club=all&statType=general&position=all'

# 初始化Chrome浏览器(用webdriver-manager自动安装对应版本的ChromeDriver)
browser = webdriver.Chrome(webdriver.ChromeDriverManager().install())

try:
    browser.get(target_url)
    
    # 等待表格加载完成(最多等待10秒)
    wait = WebDriverWait(browser, 10)
    stats_table = wait.until(EC.presence_of_element_located((By.CLASS_NAME, 'stats-table')))
    
    # 提取表头文本
    table_headers = [header.text.strip() for header in stats_table.find_elements(By.TAG_NAME, 'th')]
    
    # 提取表格行数据(跳过表头行)
    table_rows = []
    for row in stats_table.find_elements(By.TAG_NAME, 'tr')[1:]:
        row_content = [cell.text.strip() for cell in row.find_elements(By.TAG_NAME, 'td')]
        if row_content:  # 过滤空行
            table_rows.append(row_content)
    
    # 把数据转成DataFrame,方便后续处理
    stats_df = pd.DataFrame(table_rows, columns=table_headers)
    print(stats_df.head())  # 打印前5行数据
    stats_df.to_csv('mls_2023_player_stats.csv', index=False)  # 保存为CSV文件

finally:
    # 确保浏览器最终关闭,释放资源
    browser.quit()

3. 核心注意事项

  • 等待动态元素:目标网站的表格是JavaScript动态渲染的,直接刚打开页面就查找元素会失败,必须用WebDriverWait等待表格元素加载完成。
  • 元素定位优化:优先用类名、ID这类稳定的属性定位元素,比XPath更不易受页面结构变化影响。目标表格的类名是stats-table,直接用这个定位更可靠。
  • 数据结构化:用pandas把提取到的文本数据转成DataFrame,方便查看、筛选和导出。
  • 资源清理:用try...finally块包裹代码,确保无论抓取成功还是失败,浏览器都会被关闭,避免后台残留进程。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 02:22:44