【问题标题】:R: rvest not capturing tableR: rvest 没有捕获表
【发布时间】:2017-06-17 03:55:07
【问题描述】:

我正在尝试从 website 中提取 ~3000 个表并将其放入一个文件中

第一次尝试:

library(rvest)
library(dplyr)
library(data.table)
library(readr)

  url = read_html("http://seia.sea.gob.cl/busqueda/buscarProyectoAction.php?_paginador_refresh=1&_paginador_fila_actual=1")

  relevant_table = url %>%
    html_nodes("table") %>% 
    html_table()

  relevant_table = url %>%
    html_nodes(xpath = '//*[contains(concat( " ", @class, " " ), concat( " ", "contenido", " " ))] | //td | //th') %>% 
    html_table()

它不起作用所以我做了:

write_lines(url,"url.txt")

我可以看到<table> ... </table> 部分没有保存。

我阅读了这些链接:Link1Link2Link3

xpath 部分是在我尝试使用 Chrome 扩展程序中的 selector gadget 检查网站之后出现的。

第二次尝试:

library(XML)
library(httr)

url = "http://seia.sea.gob.cl/busqueda/buscarProyectoAction.php?_paginador_refresh=1&_paginador_fila_actual=1"
doc = htmlParse(GET(theurl, user_agent("Mozilla")))
results = xpathSApply(doc, '//*[contains(concat( " ", @class, " " ), concat( " ", "contenido", " " ))] | //td | //th')
results = readHTMLTable(results[[1]])

与第一次尝试相同的问题。我能注意到的是,导入的 HTML 并没有包含我在 Chrome 中查看源代码时可以看到的表格。

如果我去 view-source:http://seia.sea.gob.cl/busqueda/buscarProyectoAction.php?_paginador_refresh=1&_paginador_fila_actual=1 我可以看到表格:

<tr>
         <td>1</td>
         <td><a target=_new href='http://seia.sea.gob.cl/expediente/expediente.php?id_expediente=2132451239&modo=ficha' title='Proyecto Inmobiliario Hacienda Estancilla. Comuna de Valdivia. Región de los Ríos'>Proyecto Inmobiliario Hacienda Estancilla. Comuna de Valdivia. Región de los Ríos</a></td>
         <td>DIA</td>
         <td>Decimocuarta</td>
         <td align=center>h1</td>
         <td><span title="Teléfono: 222 333 232"> <a href="mailto:dsuazo@civilia.cl">Daniel Andrés Suazo Quinteros</a></span></td>
         <td align=right>20,0000</td>
         <td align=right>02/06/2017</td>
         <td>En Admisión</td>
</tr>

有什么想法吗?非常感谢提前!!

【问题讨论】:

  • 当我打开那个页面时,上面没有表格。看起来它可能依赖于会话。
  • “致命错误:在非对象上调用成员函数 setFilaActual()”
  • 不是真的,因为我没有登录那个网站
  • @42- 是的,这就是我通过 XML 包获得的。我将在帖子中添加另一种方法

标签: html r web-scraping rvest


【解决方案1】:

几个月前我试图抓取这个页面。我检测到您是否修改了可以访问表格的部分 url。您应该将_paginador_refresh=1 更改为_paginador_refresh=0。我给你举个例子:

#Load libraries
library(rvest)
library(stringr)
library(dplyr)
library(stringr)

# base url
base_url <- "https://seia.sea.gob.cl/busqueda/buscarProyectoAction.php?nombre=&_paginador_refresh=0&_paginador_fila_actual="

# create an empty dataframe
final_table <- data.frame()

# Create a loop to query each page. Here we can scrape only first 10 pages
for (page in 1:10) {
  query <- read_html(str_c(base_url,page)) %>% 
    html_element(css = ".tabla_datos") %>% 
    html_table()
  final_table <- rbind(final_table,query) 
}

【讨论】:

    猜你喜欢
    • 2022-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-01
    • 1970-01-01
    相关资源
    最近更新 更多