使用RCurl抓取情感数据前,如何设置等待时长?
解决curl抓取前添加等待时长的问题
你当前抓取到的数据显示为"--",是因为目标页面的情感数据可能是通过JavaScript动态加载的,直接发起请求时页面还未完成数据填充,添加等待时长可以解决这个问题。以下是两种适配你现有代码的方案:
方案一:使用Sys.sleep()简单暂停
这是最直接的方式,让R会话暂停指定秒数后再发起请求,示例中设置等待5秒:
library(stringr) library(curl) # 等待5秒,可根据实际情况调整时长 Sys.sleep(5) links <- "https://www.dailyfx.com/sentiment" con <- curl(links) open(con) html_string <- readLines(con, n = 3000) html_string[1580:1700]
方案二:结合curl的超时与重试(更稳健)
如果页面加载时长不稳定,可以设置curl的超时参数,并配合重试机制,确保抓取到加载完成的页面:
library(stringr) library(curl) links <- "https://www.dailyfx.com/sentiment" # 设置curl选项:超时10秒,重试2次 h <- new_handle(timeout = 10, retry = 2) # 先等待3秒再发起请求 Sys.sleep(3) con <- curl(links, handle = h) open(con) html_string <- readLines(con, n = 3000) html_string[1580:1700]
注意事项
- 等待时长可根据实际页面加载速度调整,一般3-10秒足够。
- 如果上述方法仍无法获取真实数据,说明页面依赖复杂的JavaScript渲染,此时需要使用RSelenium、playwrightR等支持动态页面渲染的工具。
内容的提问来源于stack exchange,提问作者Jovan
相关产品推荐
相关产品推荐

