我正在嘗試在
library(rvest)
library(dplyr)
url <- ("https://stockanalysis.com/stocks/")
page <- read_html(url)
stocks <- page %>%
html_nodes('table#symbol-table') %>%
html_table() %>% .[[1]]
stocks
uj5u.com熱心網友回復:
觀察:
如果您向下滾動頁面,您將看到有一個選項可以批量請求更多結果。在這種特殊情況下,設定為最大批量大小一次性回傳所有結果。
請求更多結果時,監控網路流量顯示沒有額外流量,這意味著資料存在于原始回應中。
搜索最后一個符號的頁面源會發現所有專案都預加載在腳本標記中。檢查 JavaScript 源檔案顯示了根據各種輸入引數將新批次推送到頁面上的說明。
解決方案:
您可以簡單地從script標簽中提取 JavaScript 物件并決議為 JSON。將串列串列轉換為資料框,然后添加基于公共基本字串 符號的構造 url。
去做:
- 如果您想更新標題名稱,由您決定
- 您可能希望格式化數字列以匹配網頁格式
回復:
library(rvest)
library(jsonlite)
library(tidyverse)
r <- read_html('https://stockanalysis.com/stocks/') %>%
html_element('#__NEXT_DATA__') %>%
html_text() %>%
jsonlite::parse_json()
df <- map_df(r$props$pageProps$stocks, ~ .x)%>%
mutate(url = paste0('https://stockanalysis.com/stocks/', s))
示例輸出:

轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/382733.html
下一篇:使用Selenium獲取元素串列
