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

使用R语言爬取BSE印度公告页指定条件的PDF链接

爬取BSEIndia公告页面的PDF链接(R语言实现)

这个网站的公告数据是动态加载的,直接用rvest抓取静态HTML拿不到选择日期和分类后的结果,可通过以下两种方案解决:

方案1:用RSelenium模拟浏览器操作(直观易上手)

适合新手,完全模拟人工操作浏览器的流程:

  1. 安装并加载所需包
install.packages(c("RSelenium", "rvest", "dplyr"))
library(RSelenium)
library(rvest)
library(dplyr)
  1. 启动Chrome驱动(需确保Chrome浏览器和chromedriver版本匹配,chromedriver可从Chrome官方渠道下载)
# 启动驱动,端口可自行调整
driver <- rsDriver(browser = "chrome", port = 4567L)
remDr <- driver[["client"]]

# 打开目标页面
remDr$navigate("https://www.bseindia.com/corporates/ann.html")
  1. 选择分类和日期
# 定位分类下拉框,选择"Results"(可根据页面实际选项文本调整)
category_dropdown <- remDr$findElement(using = "id", value = "ddlCategory")
category_dropdown$sendKeysToElement(list("Results"))

# 输入起始和结束日期(格式DD-MM-YYYY)
start_date <- remDr$findElement(using = "id", value = "txtFromDate")
start_date$clearElement()
start_date$sendKeysToElement(list("01-10-2024")) # 替换成你需要的日期

end_date <- remDr$findElement(using = "id", value = "txtToDate")
end_date$clearElement()
end_date$sendKeysToElement(list("01-10-2024"))
  1. 触发搜索并提取PDF链接
# 点击搜索按钮
search_btn <- remDr$findElement(using = "id", value = "btnSubmit")
search_btn$clickElement()

# 等待页面加载(根据网络情况调整等待时间)
Sys.sleep(5)

# 获取页面源码并解析
page_source <- remDr$getPageSource()[[1]]
page <- read_html(page_source)

# 提取PDF链接(检查页面元素确认class,这里假设是"pdflink")
pdf_links <- page %>%
  html_elements("a.pdflink") %>%
  html_attr("href") %>%
  paste0("https://www.bseindia.com", .) # 补全完整URL

# 查看结果
print(pdf_links)
  1. 关闭浏览器驱动
remDr$close()
driver$server$stop()

方案2:直接调用API接口(高效无浏览器)

通过浏览器开发者工具抓包找到网站的实际数据接口,直接发送请求获取数据,速度更快:

  1. 安装并加载包
install.packages(c("httr", "jsonlite", "dplyr"))
library(httr)
library(jsonlite)
library(dplyr)
  1. 构造请求并获取数据
# 构造请求参数,根据实际需求调整日期和分类
payload <- list(
  strCat = "Results",
  strPrevDate = "01-10-2024",
  strScrip = "",
  strSearch = "",
  strToDate = "01-10-2024",
  strType = "C"
)

# 发送POST请求,需添加请求头模拟浏览器
response <- POST(
  url = "https://api.bseindia.com/BseIndiaAPI/api/AnnGetData/w",
  body = payload,
  encode = "json",
  add_headers(
    "User-Agent" = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36",
    "Referer" = "https://www.bseindia.com/corporates/ann.html"
  )
)

# 解析JSON响应
result <- fromJSON(content(response, "text"))

# 提取PDF链接
pdf_links <- result$result$Table %>%
  filter(!is.na(PDF_LINK)) %>%
  pull(PDF_LINK) %>%
  paste0("https://www.bseindia.com", .)

# 查看结果
print(pdf_links)

注意事项

  • RSelenium方案需匹配浏览器和驱动版本,否则会启动失败;
  • API接口的参数或地址可能随网站更新变化,需用浏览器开发者工具抓包确认最新信息;
  • 不要频繁发送请求,避免触发网站反爬机制。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 19:45:51