我想要抓的桌子上有网址。如果我运行代码,我只得到包含url描述的列。如何获得实际上具有列(在mycase第二列中)的表,而不是其描述,或者具有锚的完整html代码?。我需要它从表的第二列中的URL中提取两个索引代码。我想要抓取的链接如下:https://aplikacje.nfz.gov.pl/umowy/Agreements/GetAgreements?ROK=2017&ServiceType=03&ProviderId=20795&OW=15&OrthopedicSupply=False&Code=150000001我需要ProviderId和代码编号,但我需要使用下面代码中的表格中的链接。
table<-0
library(rvest)
for (i in 1:10){
url<-paste0("https://aplikacje.nfz.gov.pl/umowy/Provider/Index?ROK=2017&OW=15&ServiceType=03&OrthopedicSupply=False&page=",i)
page<-html_session(url)
table[i]<-html_table(page)
}
感谢所有的评论和帮助。
答案 0 :(得分:2)
以下是如何从一个页面获取它们。请注意,我使用%&gt;%运算符,这样可以更轻松地阅读,但如果您愿意,可以嵌套调用
library(rvest)
url<-paste0("https://aplikacje.nfz.gov.pl/umowy/Provider/Index?ROK=2017&OW=15&ServiceType=03&OrthopedicSupply=False&page=1")
page<-html_session(url)
links <- html_nodes(page, 'table') %>% html_nodes("a") %>% html_attr("href")
答案 1 :(得分:2)
这个shld帮助你得到一个漂亮,干净,完整的表格,里面有你想要的href:
library(rvest)
library(tidyverse)
# Helpers
rm_extra <- function(x) { gsub("\r.*$", "", x) }
mk_gd_col_names <- function(x) {
tolower(x) %>%
gsub("\ +", "_", .)
}
URL <- "https://aplikacje.nfz.gov.pl/umowy/Provider/Index?ROK=2017&OW=15&ServiceType=03&OrthopedicSupply=False&page=%d"
get_table <- function(page_num = 1) {
pg <- read_html(sprintf(URL, page_num))
tab <- html_nodes(pg, "table")
html_table(tab)[[1]][,-c(1,11)] %>%
set_names(rm_extra(colnames(.) %>% mk_gd_col_names)) %>%
mutate_all(funs(rm_extra)) %>%
mutate(link = html_nodes(tab, xpath=".//td[2]/a") %>% html_attr("href")) %>%
as_tibble()
}
pb <- progress_estimated(10)
map_df(1:10, function(i) {
pb$tick()$print()
get_table(page_num = i)
}) -> full_df
glimpse(full_df)
## Observations: 93
## Variables: 10
## $ kod <chr> "150000016", "150005039", "1500046...
## $ nazwa_świadczeniodawcy <chr> "SAMODZIELNY PUBLICZNY ZAKŁAD OPIE...
## $ miasto <chr> "GRODZISK WIELKOPOLSKI", "KALISZ",...
## $ ulica <chr> "MOSSEGO 17", "POZNAŃSKA 23", "OS....
## $ kod_pocztowy <chr> "62065", "62800", "60688", "62510"...
## $ nip <chr> "9950036856", "6181976770", "97201...
## $ regon <chr> "317760", "251525840", "630804009"...
## $ sumaryczna_kwota_zobowiązań <chr> "8 432 922,00", "332 078,25", "416...
## $ szczegóły <chr> "Umowy", "Umowy", "Umowy", "Umowy"...
## $ link <chr> "/umowy/Agreements/GetAgreements?R...
full_df
## # A tibble: 93 × 10
## kod
## <chr>
## 1 150000016
## 2 150005039
## 3 150004658
## 4 150009135
## 5 150003546
## 6 150000066
## 7 150003556
## 8 150000073
## 9 150003539
## 10 150008909
## # ... with 83 more rows, and 9 more variables:
## # nazwa_świadczeniodawcy <chr>, miasto <chr>, ulica <chr>,
## # kod_pocztowy <chr>, nip <chr>, regon <chr>,
## # sumaryczna_kwota_zobowiązań <chr>, szczegóły <chr>, link <chr>