【问题标题】:Webscraping an html div tag with style elementWebscraping 带有样式元素的 html div 标签
【发布时间】:2019-11-12 09:35:22
【问题描述】:

我正在尝试抓取以下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)

我不确定代码发生了什么,或者是否有更好的方法来抓取这些信息,但我真的很希望能够抓取 sumario 和 fecha 内容。

【问题讨论】:

    标签: html r web-scraping rvest


    【解决方案1】:

    要获得“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"
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 之后您需要清理字符串,就像其他回答者在下面使用 billsum_text %>% gsub("\t|\n", "", .)
      猜你喜欢
      • 2014-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-17
      • 2015-12-22
      相关资源
      最近更新 更多