如何用R语言httr包模拟点击按钮抓取随机星球名称?
无需RSelenium的解决方案
你可以直接模拟"generate"按钮触发的POST请求来获取生成的行星名称,代码如下:
library(httr) library(rvest) url <- "https://letsmakeagame.net/tools/PlanetNameGenerator/" # 发送触发生成逻辑的POST请求 res <- POST( url, body = list("EntryPoint.generate()" = "true"), encode = "form", add_headers( "User-Agent" = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36" ) ) # 解析返回的页面提取行星名称 generated_page <- content(res, as = "html") planet_name <- generated_page %>% html_node("#title") %>% html_text(trim = TRUE) print(planet_name)
关键说明:
- 你之前的代码仅GET了初始页面,此时行星名称还未生成,所以无法提取到内容
- 通过浏览器开发者工具的Network面板可观察到,点击"generate"按钮时,页面会发送一个携带
EntryPoint.generate()=true参数的POST请求到原URL - 发送该POST请求后,后端会生成随机行星名称并返回包含该名称的HTML页面,此时即可用rvest提取目标元素
内容的提问来源于stack exchange,提问作者Thomas
相关产品推荐
相关产品推荐

