我想抓住这个网址:https://prog.nfz.gov.pl/app-jgp/GrupaSzczegoly.aspx?id=2AfRAM1JYDoYzktSMvdOhFiPm2Fnh67q
它列出了每个地区的医疗程序统计数据,html具有结构:标题和相应表格,为全国所有地区的16倍。
简化的html:
<div class="tytul">01 - NameOfDistrict_01</div>
<table>
...
<tr>
<td class="lewa">No. of procedures</td>
<td class="prawa"><span id="ContentPlaceHolder1_lblbw">950</span>
</td>
...
</table>
<div class="tytul">02 - NameOfDistrict_02</div>
<table>
<tr>
...
<tr>
<td class="lewa">No. of procedures</td>
<td class="prawa"><span id="ContentPlaceHolder1_lblbw">350</span>
</td>
...
</td>
</table>
<div class="tytul">nn - NameOfDistrict_nn</div>
<table>
...
<tr>
<td class="lewa">No. of procedures</td>
<td class="prawa"><span id="ContentPlaceHolder1_lblbw">850</span>
</td>
...
</table>
我不需要刮掉整个表格(如果可以的话我会很好)我只需要一个或两个值,所以我试着用Selector Gadget查看页面。我感兴趣的一个值是节点#ContentPlaceHolder1_lblbw 中存在的过程数量,并且前面是标题,即 .tytul 类。
mydata <- read_html(....) %>% html_nodes(name, "#ContentPlaceHolder1_lblbw") %>%
html_text()
但是这个占位符会针对每个区域重复。然后我需要在表格上方的标题之后阅读第一个这样的占位符。并记录下面的每个标题和表格。
如何将此表刮到数据框
District No. of procedures
NameOfDistrict_01 950
NameOfDistrict_02 350
............................
NameOfDistrict_nn 850
答案 0 :(得分:5)
我认为这可以满足您的需求。
library(rvest)
page <- read_html("https://prog.nfz.gov.pl/app-jgp/GrupaSzczegoly.aspx?id=2AfRAM1JYDoYzktSMvdOhFiPm2Fnh67q",encoding=-"utf-8")
data <- page %>% html_nodes(xpath='//*[@id="ContentPlaceHolder1_lblbp"]') %>% html_text()
titles <- page %>% html_nodes(xpath='//*[@class="tytul"]') %>% html_text()
myData <- data.frame(title=titles,data=as.numeric(data))
head(myData)
title data
1 01 - DOLNOSLASKI 919
2 02 - KUJAWSKO-POMORSKI 984
3 03 - LUBELSKI 1476
4 04 - LUBUSKI 255
5 05 - LÓDZKI 1225
6 06 - MALOPOLSKI 1780