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

如何用R的httr包POST请求获取infantchart儿童体重百分位数

解决httr提交表单抓取婴儿体重百分位数的问题

嘿,作为刚接触httr包的新手,碰到表单提交的坑太正常啦!我帮你一步步梳理怎么搞定从目标网站抓取数据的需求:

第一步:先搞清楚网站的表单参数

首先你得确认网站实际接收的参数名称和格式——这是POST请求成功的关键!你可以打开浏览器的开发者工具(按F12),切换到「网络」标签,手动提交一次表单,找到对应的POST请求,查看「Form Data」部分,就能看到每个输入项对应的参数名(比如性别可能是gender,出生日期可能是dob,这些都要以网站实际的命名为准,别自己瞎猜)。

第二步:编写正确的httr POST代码

结合你需要的5个参数,这里给你一个可参考的代码模板,你可以根据实际参数名调整:

library(httr)
library(rvest) # 用来解析返回的HTML内容

# 定义你的参数,注意替换成实际的参数名和符合网站要求的格式
form_params <- list(
  gender = "female",          # 性别:比如"male"或"female",看网站选项
  dob = "2022-06-15",        # 出生日期:格式要和网站一致,比如YYYY-MM-DD
  measurement_date = "2024-03-20", # 测量日期
  weight = "10.2",           # 体重数值
  unit = "kg"                # 单位:比如"kg"或"lb",以网站实际提交值为准
)

# 发送POST请求,模拟浏览器请求避免被拦截
response <- POST(
  url = "https://www.infantchart.com/",
  body = form_params,
  encode = "form", # 表单数据的编码方式,一般用form即可
  add_headers(
    "User-Agent" = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36"
  )
)

# 检查请求是否成功,如果失败会自动报错
stop_for_status(response)

# 解析返回的HTML页面,提取需要的年龄和百分位数
page_html <- content(response, "text") %>% read_html()

# 这里的CSS选择器需要你根据实际页面结构调整!
# 比如你可以用浏览器开发者工具的「选择元素」功能,找到年龄和百分位数对应的标签
child_age <- page_html %>% html_element(".age-display") %>% html_text()
weight_percentile <- page_html %>% html_element(".percentile-result") %>% html_text()

# 输出结果
cat("孩子的年龄:", child_age, "\n")
cat("体重百分位数:", weight_percentile, "\n")

几个关键注意事项

  • 参数格式要匹配:比如日期格式如果网站要求是MM/DD/YYYY,就不能传YYYY-MM-DD;单位如果网站实际接收的是pounds而不是lb,一定要改过来,否则请求会无效。
  • 调试技巧:如果返回的内容不对,可以先打印content(response, "text")看看实际拿到的页面是什么,有没有报错信息。
  • 遵守网站规则:不要频繁发送请求,避免被网站封禁IP;可以先查看网站的robots.txt文件,确认允许抓取这类数据。
  • 动态内容处理:如果网站是用JavaScript加载结果的,httr可能拿不到数据,这时候你可能需要用RSelenium或者playwright包来模拟浏览器操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:52:03