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

使用R的rvest与V8抓取JS渲染地块页面,获取全部地块数据问询

问题根源
  • 你请求的是单页应用的初始静态骨架,地块数据、parcel全局变量、div.owner节点都需要前端异步请求数据、执行JS渲染后才会生成,直接用read_html()拿到的内容里没有这些元素,你提取到的owners是无效值
  • V8执行JS需要完整的运行上下文,你没有提前加载页面依赖的所有JS文件,直接执行不完整的代码片段自然会报parcel未定义的错误
解决方案

优先选择接口抓取(效率最高):

  • 打开浏览器F12开发者工具,切换到「网络」面板,筛选「Fetch/XHR」请求,刷新页面后即可找到加载地块数据的后端接口,返回格式一般为JSON。你可以直接用httr包的GET()方法请求该接口,解析后就能拿到全量地块数据,无需处理前端JS逻辑。

如果找不到接口,可使用无头浏览器渲染完整页面后提取数据,示例使用chromote包实现:

library(chromote)
library(rvest)
library(magrittr)

# 启动无头浏览器实例
chrome_session <- ChromoteSession$new()

# 跳转目标页面
chrome_session$Page$navigate("https://hosting.tighebond.com/plainfieldct_public/##info-address")

# 等待JS执行和页面渲染完成,可替换为等待指定节点出现的逻辑提高稳定性
Sys.sleep(3)

# 获取渲染完成的完整HTML内容
rendered_html <- chrome_session$Runtime$evaluate("document.documentElement.outerHTML")$result$value %>% 
  read_html()

# 提取业主信息
owners <- rendered_html %>% 
  html_nodes("div.owner") %>% 
  html_text()

# 关闭浏览器实例
chrome_session$close()
全量爬取注意事项
  • 若你找到的是列表接口,可直接获取全量数据;若需要遍历单个地块详情,可先抓取所有地块的唯一标识,循环拼接对应地址或模拟触发页面点击事件后再提取数据
  • 请控制请求频率,避免对目标服务器造成过大压力导致IP被限制访问

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 01:15:02