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

如何从SerpApi页面提取query数据并转为R单列数据框?

解决SerpApi谷歌趋势页面提取query关键词的问题

问题原因

你之前的代码返回NA,是因为html_attr("query")试图提取HTML元素的query属性,但页面中没有任何元素带有这个属性。SerpApi的谷歌趋势相关查询数据要么嵌入在页面的可视元素文本中,要么以JSON格式存储在页面的脚本标签内,需要针对性提取。

解决方案

提供两种可靠的提取方式:

方法一:直接提取页面中的可视查询文本

通过定位页面中展示相关查询的HTML元素,提取其文本内容:

library(rvest)
library(dplyr)

# 读取目标页面
allcom <- read_html("https://serpapi.com/search.html?engine=google_trends&q=coffee&data_type=RELATED_QUERIES&cat=0&date=now+7-d&api_key=317da75462cab4790705a5cf8b6a9c74c9ba9f279150afb87d4b191f95d8d5de")

# 定位所有包含query的元素,提取文本
queries <- allcom %>% 
  html_elements(".related-query-item .query") %>% 
  html_text2()

# 转换为单列数据框
query_df <- data.frame(query = queries)

# 查看结果
print(query_df)

方法二:从页面嵌入的JSON数据提取(更稳定)

SerpApi会将API返回的完整数据以JSON格式嵌入页面的脚本标签中,解析这个JSON可以直接获取所有相关查询:

library(rvest)
library(jsonlite)
library(dplyr)

# 读取目标页面
allcom <- read_html("https://serpapi.com/search.html?engine=google_trends&q=coffee&data_type=RELATED_QUERIES&cat=0&date=now+7-d&api_key=317da75462cab4790705a5cf8b6a9c74c9ba9f279150afb87d4b191f95d8d5de")

# 提取存储API数据的脚本内容
json_content <- allcom %>% 
  html_element("#__NEXT_DATA__") %>% 
  html_text()

# 解析JSON数据
parsed_data <- fromJSON(json_content)

# 提取Top和Rising两类查询的关键词
top_queries <- parsed_data$props$pageProps$search_metadata$raw_html %>% 
  fromJSON() %>% 
  pluck("related_queries", "top") %>% 
  pull(query)

rising_queries <- parsed_data$props$pageProps$search_metadata$raw_html %>% 
  fromJSON() %>% 
  pluck("related_queries", "rising") %>% 
  pull(query)

# 合并所有关键词并转为数据框
all_queries <- c(top_queries, rising_queries)
query_df <- data.frame(query = all_queries)

# 查看结果
print(query_df)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 17:35:08