r-提取网页链接标题以便命名列表



我有以下数据:

url = getURL("https://www.fomento.gob.es/be2/?nivel=2&orden=34000000")
parsed <- htmlParse(url)
links <- xpathSApply(parsed,path = "//a", xmlGetAttr, "href")
hrefLinks = xpathSApply(parsed,path = "//a")
xlsLinks <- hrefLinks[grep('.XLS|.xls', links, value = FALSE)]
xlsLinks

这给了我类似的东西:

[[31]]
<a target="_blank" href="sedal/34020150.XLS" title="Enlace a un archivo con extensión .xls. Este enlace abre una ventana nueva">3.3   Valor medio de las transacciones inmobiliarias de vivienda libre</a> 
[[32]]
<a target="_blank" href="sedal/34020160.XLS" title="Enlace a un archivo con extensión .xls. Este enlace abre una ventana nueva">3.3.1  Valor medio de las transacciones inmobiliarias de vivienda libre nueva</a> 
[[33]]
<a target="_blank" href="sedal/34020170.XLS" title="Enlace a un archivo con extensión .xls. Este enlace abre una ventana nueva">3.3.2  Valor medio de las transacciones inmobiliarias de vivienda libre de segunda mano</a> 
[[34]]
<a target="_blank" href="sedal/34020180.XLS" title="Enlace a un archivo con extensión .xls. Este enlace abre una ventana nueva">3.4   Valor medio de las transacciones inmobiliarias de vivienda libre de extranjeros residentes en España</a> 

我想提取";标题";每个列表链接的。即,对于以上4个示例,我想提取:

  1. 3.3 Valor medio de las transacciones inmobiliarias de vivienda libre
  2. 3.3.1 Valor medio de las transacciones inmobiliarias de vivienda libre nueva
  3. 3.3.2 Valor medio de las transacciones inmobiliarias de vivienda libre de segunda mano
  4. 3.4 Valor medio de las transacciones inmobiliarias de vivienda libre de extranjeros residentes en España

在完整列表中,我想提取34这样的类型。它们都对应于扩展名为xls的URLS。其想法是使用这些值来命名URLS的列表。

您可以使用rvest,然后使用一个带有$的attribute=value css选择器,以运算符结束,以定位所需的元素(添加一个父元素id作为安全网的锚点(。由于在rvest实现中不支持i不区分大小写标志,因此需要提供OR语法来满足href属性中大小写子字符串的需要。然后,您可以使用html_text()作为返回的nodeList的标题。

library(magrittr)
library(rvest)
library(purrr)
url <- "https://www.fomento.gob.es/be2/?nivel=2&orden=34000000"
df <-
map_dfr(
read_html(url) %>%
html_elements('#app_camaleon [href$=".xls"], #app_camaleon [href$=".XLS"]'),
~ data.frame(
title = .x %>% html_text(),
link = .x %>% html_attr("href") %>% url_absolute(url)
)
)

拆分并获得第三项:

x <- list(
'<a target="_blank" href="sedal/34020150.XLS" title="Enlace a un archivo con extensión .xls. Este enlace abre una ventana nueva">3.3   Valor medio de las transacciones inmobiliarias de vivienda libre</a>',
'<a target="_blank" href="sedal/34020160.XLS" title="Enlace a un archivo con extensión .xls. Este enlace abre una ventana nueva">3.3.1  Valor medio de las transacciones inmobiliarias de vivienda libre nueva</a>',
'<a target="_blank" href="sedal/34020170.XLS" title="Enlace a un archivo con extensión .xls. Este enlace abre una ventana nueva">3.3.2  Valor medio de las transacciones inmobiliarias de vivienda libre de segunda mano</a>',
'<a target="_blank" href="sedal/34020180.XLS" title="Enlace a un archivo con extensión .xls. Este enlace abre una ventana nueva">3.4   Valor medio de las transacciones inmobiliarias de vivienda libre de extranjeros residentes en España</a>')
sapply(x, function(i) strsplit(i, "[<>]")[[ 1 ]][ 3 ])
# [1] "3.3   Valor medio de las transacciones inmobiliarias de vivienda libre"                                    
# [2] "3.3.1  Valor medio de las transacciones inmobiliarias de vivienda libre nueva"                             
# [3] "3.3.2  Valor medio de las transacciones inmobiliarias de vivienda libre de segunda mano"                   
# [4] "3.4   Valor medio de las transacciones inmobiliarias de vivienda libre de extranjeros residentes en España"

最新更新