2017-10-06 4 views
4

Je veux gratter la table de données sur ce website.Scraping tableau de données qui n'existe pas dans la source de la page

Je vérifie la source de la page pour cette page, la table n'existe pas dans la source de la page.

Ensuite, j'ai vérifié les informations du réseau lors de rafraîchir le site, il semble que le tableau de données est obtenue en envoyant une requête POST à ​​l'adresse suivante:

http://datacenter.mep.gov.cn:8099/ths-report/report!list.action 

Alors j'ai essayé d'envoyer une requête POST, mais juste n'a rien avec statut 500.

Je me demandais s'il y avait moyen de réduire cette table en utilisant R?

Merci.

Répondre

1

Bon sleuthing! J'ai fait la demande GET pour moi. Cela semble faire l'affaire. Il essaie également de choisir la bonne cible pour vous:

library(httr) 
library(rvest) 
library(stringi) 

pg <- read_html("http://datacenter.mep.gov.cn/index!MenuAction.action?name=259206fe260c4cf7882462520e1e3ada") 

html_nodes(pg, "div[onclick]") %>% 
    html_attr("onclick") %>% 
    stri_replace_first_fixed('load("', "") %>% 
    stri_replace_last_regex('",".*$', "") -> report_urls 

head(report_urls) 
## [1] "http://datacenter.mep.gov.cn:8099/ths-report/report!list.action?xmlname=1462849093743" 
## [2] "http://datacenter.mep.gov.cn:8099/ths-report/report!list.action?xmlname=1462764947052" 
## [3] "http://datacenter.mep.gov.cn:8099/ths-report/report!list.action?xmlname=1465594312346" 
## [4] "http://datacenter.mep.gov.cn:8099/ths-report/report!list.action?xmlname=1462844293531" 
## [5] "http://datacenter.mep.gov.cn:8099/ths-report/report!list.action?xmlname=1462844935563" 
## [6] "http://datacenter.mep.gov.cn:8099/ths-report/report!list.action?xmlname=1462845592195" 

rpt_pg <- read_html(report_urls[1]) 
html_table(rpt_pg)[[2]] 
# SO won't let me paste the table