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

如何在R爬虫中为缺失地址的位置填充NA值?

黄页爬虫修改:处理无地址商家的NA填充问题

问题场景

从黄页爬取商家名称与地址时,使用基于rvest和dplyr的爬虫函数遇到报错:「Tibble列尺寸不兼容」。原因是部分商家无地址信息,直接批量提取名称和地址会导致两者长度不一致,例如Sudbury地区理发师搜索页面中存在无地址的商家。

修改思路

不再分别批量提取所有名称和地址,而是先定位每个商家的独立容器节点,再逐个从容器内提取名称和地址。若容器内无地址元素,则自动填充NA,逻辑类似SQL中的CASE WHEN。

修改后代码示例

library(rvest)
library(dplyr)
library(purrr)

scrape_yellowpages <- function(url) {
  # 读取目标页面
  page <- read_html(url)
  
  # 获取每个商家的容器节点
  business_containers <- page %>% html_elements(".listing__content")
  
  # 遍历容器,逐个提取信息
  map_dfr(business_containers, function(container) {
    # 提取商家名称
    name <- container %>% html_element(".listing__name--link") %>% html_text2()
    
    # 提取地址,无地址则返回NA
    address <- container %>% html_element(".listing__address") %>% html_text2()
    address <- ifelse(is.na(address), NA_character_, address)
    
    tibble(barber = name, address = address)
  })
}

# 测试调用
target_url <- "https://www.yellowpages.ca/search/si/1/barber/Sudbury+ON"
scrape_result <- scrape_yellowpages(target_url)
print(scrape_result)

期望输出示例

barberaddress
1barber111address111
2barber222address222
3barber333NA

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 13:25:38