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

使用R的rvest、polite包爬取Etsy商品信息返回空值如何解决

问题原因
  • 请求路径与参数错误:你直接向Etsy根路径发起请求,且直接沿用了cheese网站的查询参数t,但Etsy搜索的对应路径为/search,关键词查询参数为q,参数和路径均不匹配,自然无法返回目标搜索页面
  • 页面节点选择错误:Etsy的页面结构不存在#main-body节点,商品标题也不是全局无属性的h3标签,选择器完全不匹配目标内容,所以返回空值
修正后的可运行代码
library(polite)
library(rvest)
library(purrr)

# 自定义爬取函数,入参为爬取页数、搜索关键词
scrape_etsy <- function(pages = 1, keyword = "Christmas candle") {
  # 初始化Etsy搜索会话
  session <- bow("https://www.etsy.com/search", force = TRUE)
  
  # 循环爬取多页内容并整合为数据框
  map_dfr(1:pages, function(current_page) {
    # 构造搜索请求参数
    page_content <- scrape(session, query = list(
      q = keyword,
      order = "most_relevant",
      view_type = "gallery",
      page = current_page
    ))
    
    # 提取当前页商品标题、搜索结果页展示的短描述
    titles <- page_content %>%
      html_nodes(".v2-listing-card__title") %>%
      html_text2()
    
    short_descriptions <- page_content %>%
      html_nodes(".v2-listing-card__description") %>%
      html_text2()
    
    return(data.frame(
      page = current_page,
      title = titles,
      short_description = short_descriptions,
      stringsAsFactors = FALSE
    ))
  })
}

# 测试爬取1页搜索结果
result_etsy <- scrape_etsy(pages = 1)
head(result_etsy)
注意事项
  • 爬取前请确认Etsy的robots.txt规则允许爬取对应内容,控制爬取频率避免IP被封禁
  • 电商平台页面结构会不定期更新,若后续返回空值可通过浏览器调试工具重新查找目标内容对应的CSS选择器调整即可
  • 若需要获取商品完整描述,需要在上述逻辑中新增商品详情页的爬取步骤

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 15:45:00