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

如何用Selenium爬取数据并拆分Google Sheets单元格内容?

问题描述

代码

目前我正获取所有<td>元素的值并保存至Google Sheets

Google Sheets页面开发者工具

待爬取页面中,日期与排名位于td > div > div > span, b标签下

Google Sheets页面

因此,当我仅提取<td>元素时,所有数据会存入单个单元格。能否实现如下存储方式?

示例:

  • A2: 11-27(Wed), A3:291st
  • B2: 11-26(Tue), B3:278th
  • (...)

split和bs4方法均无法生效


解决方法

1. 精准提取目标内容,按列组织数据

不要直接抓取<td>的整体文本,而是遍历每个<td>,分别定位内部的日期和排名标签,将两类数据分开收集后再按要求写入Google Sheets。

用BeautifulSoup实现的示例代码:

from bs4 import BeautifulSoup
import gspread

# 替换为你的网页内容获取逻辑
html = "你的网页HTML内容"
soup = BeautifulSoup(html, "html.parser")

# 获取所有目标<td>元素
td_elements = soup.find_all("td")

# 分别存储日期和排名
date_list = []
rank_list = []

for td in td_elements:
    # 定位<td>下的span/b元素,根据实际标签结构调整选择器
    target_tags = td.select("div > div > span, div > div > b")
    # 确保找到两个标签(日期+排名)
    if len(target_tags) >= 2:
        date = target_tags[0].get_text(strip=True)
        rank = target_tags[1].get_text(strip=True)
        date_list.append(date)
        rank_list.append(rank)

# 连接Google Sheets并写入数据
# 替换为你的认证文件路径和表格名称
gc = gspread.service_account(filename="credentials.json")
sheet = gc.open("你的表格名称").sheet1

# 按要求写入:第2行放日期,第3行放排名
sheet.update("A2", [date_list])
sheet.update("A3", [rank_list])

2. 排查split/bs4失效原因

  • bs4选择器无效:检查标签层级是否正确,比如是否遗漏了带class的父节点,可调整选择器为td > div[class="xxx"] > div[class="yyy"] > span这种精准定位方式;也可以用.find()逐层查找:td.find("div").find("div").find_all(["span", "b"])。
  • split方法无效:如果是文本分隔符不固定,先清理文本中的空白、换行符:clean_text = td.get_text(strip=True).replace("\n", "").replace("\t", ""),再尝试按固定字符或正则表达式拆分,比如用re.split(r"\s{2,}", clean_text)匹配多个空白符拆分。

内容的提问来源于stack exchange,提问作者빵슈크림

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 23:23:14