我目前正在一個網站https://www.pmjdy.gov.in/Archive上作業,首先我必須輸入一個日期(必須是星期三),然后搜索結果打開一個網頁,該網頁有資料存盤在其中,表格嵌入網頁本身。我可以以某種方式抓取整個資料并將其存盤在 Excel 檔案中。我已經撰寫了以下代碼,但是它出錯了。我認為這可能是因為此鏈接無論何時打開都需要人工輸入從日歷中輸入任何星期三日期以獲取報告。我可以自動化這個程序嗎,我只需在代碼本身中輸入當天的輸入,然后下載資料。會有很大幫助。謝謝 :)
library(RSelenium)
library(rvest)
library(tidyverse)
library(stringr)
library(purrr)
rD <- rsDriver(browser="firefox", port=4567L, verbose=F)
remDr <- rD[["client"]]
#go to the site
remDr$navigate("https://www.pmjdy.gov.in/Archive")
#get tables
tables <- remDr$findElements('class', 'table-container')
tableList <- list()
for(i in 1:length(tables)){
x <- tables[[i]]$getElementAttribute('innerHTML') %>%
unlist() %>%
read_html() %>%
html_table()
tableList[[i]] <- x[[1]]
}
system("taskkill /im java.exe /f", intern=FALSE, ignore.stdout=FALSE)
uj5u.com熱心網友回復:
無需人工干預,我們可以使用sendKeysToElement.
#load packages
library(RSelenium)
library(rvest)
library(dplyr)
driver = rsDriver(browser = c("firefox"))
remDr <- driver[["client"]]
#navigate
url <- 'https://www.pmjdy.gov.in/Archive'
remDr$navigate(url)
#input date
date_element <- remDr$findElement(using = 'xpath', value = '//*[@id="ContentPlaceHolder1_txtdate"]')
date_element$sendKeysToElement(list('23/02/2022'))
#click get report
remDr$findElement(using = "xpath",'//*[@id="ContentPlaceHolder1_btngetreport"]')$clickElement()
#get the table
df = remDr$getPageSource()[[1]] %>%
read_html() %>% html_nodes(xpath = '//*[@id="ContentPlaceHolder1_tblHTMLReport"]/tbody') %>%
html_table()
從中洗掉NA列df
df1 = df[[1]]
colMeans(is.na(df1)) > .50
final <- df1[, colMeans(is.na(df1)) <= .15])
將資料匯出到excel檔案
library("writexl")
write_xlsx(final,"report.xlsx"
#you can also use xlsx package
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/439601.html
上一篇:使用python和requests在嵌入網頁的pdf中提取一些資訊
下一篇:用漂亮的湯問題刮取資料
