使用样式元素对html div标签进行网页抓取

时间:2019-11-12 01:02:28

标签: html r web-scraping rvest

我正在尝试抓取以下div标签的内容:

<div style="font-weight:normal">

<h3> PROYECTO DE LEY </h3> <br>

 <strong>Expediente </strong>4893-D-2007<br>
 <strong>Sumario: </strong>LEY DE EDUCACION SUPERIOR: PRINCIPIOS 
 GENERALES, ESTRUCTURA Y ARTICULACION, DE LOS INSTITUTOS DE EDUCACION 
 SUPERIOR, DE LOS TITULOS Y PLANES DE ESTUDIO, ORGANOS DE GOBIERNO, 
 EDUCACION SUPERIOR A DISTANCIA, DEROGACION DE LA LEY 24521.<br>
<strong>Fecha: </strong><br>                       

 </div>

在R中使用rvest。到目前为止,我有以下代码:

link <- 
read_html(paste0("https://www.hcdn.gob.ar/proyectos/proyectoTP.jsp? 
exp=4893-D-2007"))
  type <- html_nodes(link, 'h3')
  type_text <- html_text(type)


  table <-html_node(link, "table.table.table-bordered tbody")

  table_text <- html_text(table)

  table_text <- gsub("\n", "", table_text)
  table_text <- gsub("\t", "", table_text)
  table_text <- gsub("", "", table_text)

  #this is the relevant part of the code that attempts to capture the 
  style css selector

  billsum <- html_node(link, style*='font-weight:normal')
  billsum_text <- html_text(billsum)

我不太确定代码是怎么回事,还是不确定是否有更好的方法来抓取此信息,但我真的很希望能够抓取摘要和fecha内容。

2 个答案:

答案 0 :(得分:1)

要获取“摘要”内容,您可以

library(rvest)
url <- "https://www.hcdn.gob.ar/proyectos/proyectoTP.jsp?exp=4893-D-2007"

url %>%
  read_html() %>%
  html_text() %>%
  gsub("\t|\n", "", .) %>%
  sub(".*Sumario:(.*)\\.Fecha:.*", "\\1", .)

#[1] " LEY DE EDUCACION SUPERIOR: PRINCIPIOS GENERALES, ESTRUCTURA Y ARTICULACION,
#   DE LOS INSTITUTOS DE EDUCACION SUPERIOR, DE LOS TITULOS Y PLANES DE ESTUDIO,
#   ORGANOS DE GOBIERNO, EDUCACION SUPERIOR A DISTANCIA, DEROGACION DE LA LEY 24521"

答案 1 :(得分:0)

在html_node()函数中,您可以选择相关的CSS部分,在您的情况下为“ .interno div”。我建议对Google Chrome使用“ SelectorGadget”。您可以在其中单击网页的特定部分,并排除其他人以知道您想要哪个。

link <- 
read_html(paste0("https://www.hcdn.gob.ar/proyectos/proyectoTP.jsp?exp=4893-D-2007"))

billsum <- html_node(link, ".interno div")
billsum_text <- html_text(billsum)