Webscraping HTML-тег div с элементом стиля - PullRequest
0 голосов
/ 12 ноября 2019

Я пытаюсь очистить содержимое следующего тега 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>

, используя rvest в R. У меня пока есть следующий код:

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)

Я не совсем уверен, что происходит с кодом или есть лучший способ очистить эту информацию, но я действительно хотел бы иметь возможность очистить содержимое sumario и fecha.

Ответы [ 2 ]

1 голос
/ 12 ноября 2019

Чтобы получить контент "Sumario", вы можете сделать

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"
0 голосов
/ 12 ноября 2019

Внутри функции html_node () вы можете выбрать соответствующую часть CSS, которая в вашем случае является ".interno div". Я рекомендую использовать «SelectorGadget» для Google Chrome. Там вы можете нажать на определенные части веб-страницы и исключить другие, чтобы знать, какой из них вы хотите.

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