2017-04-11 10 views
0

私が掻き集めるテーブルには、URLがあります。コードを実行すると、URLの説明を含む列のみが取得されます。実際にの列(mycaseの2番目の列)に説明の代わりにURLを持つテーブルを取得する方法、またはアンカーの完全なHTMLコードを取得する方法はありますか?。私はテーブルの第2列のURLから2つのインデックスコードを抽出する必要があります。私が掻きたいリンクは、https://aplikacje.nfz.gov.pl/umowy/Agreements/GetAgreements?ROK=2017&ServiceType=03&ProviderId=20795&OW=15&OrthopedicSupply=False&Code=150000001と私はProviderIdとコード番号が必要ですが、私は以下のコードで掻き集められたテーブルのリンクが必要です。rvest:テキストの代わりにurlのテーブルを抽出する

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) 
} 

ありがとうございました。

答えて

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> 
+0

私のマシンでうまくいきませんでした。 'open.connection(x、" rb ")のエラー: 特定のCA証明書でピア証明書を認証できません。 –

+0

あなたのコメントからhttr :: GETトリックを使用した後で動作します。 http://stackoverflow.com/questions/34551299/how-to-pass-ssl-verifypeer-in-rvest –

+0

ローカルシステムCAの更新を検討するとよいでしょう。 – hrbrmstr

1

1ページから取得する方法は次のとおりです。私は読みやすいようになり%>%演算子を使用することに注意してください、しかし、あなたは

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") 
関連する問題