2017-01-10 4 views
0

Я хочу извлечь периодическую таблицу из-под сайта.Скребьте сайт с помощью R путем навигации doPostBack

прейскурант изменяется при нажатии на названия строительных блоков (BLOK 16 A, BLOK 16 B, BLOK 16 C, ...). URL-адрес не изменяется, изменение страницы путем назначения

javascript:__doPostBack('ctl00$ContentPlaceHolder1$DataList2$ctl04$lnk_blok','') 

Я пробовал 3 пути после поиска google и starckoverflow.

что я пробовал нет 1: это не triger doPostBack событие.

postForm("http://www.kentkonut.com.tr/tr/modul/projeler/daire_fiyatlari.aspx?id=44", ctl00_ContentPlaceHolder1_DataList2_ctl03_lnk_blok="ctl00$ContentPlaceHolder1$DataList2$ctl03$lnk_blok") 

что я пытался не 2: селена дистанционный, кажется, работы по (http://localhost:4444/), но remotedriver не перемещаться. возвращает эту ошибку. (Ошибка в checkError (разрешение):. Неизвестная ошибка в HTTR вызова HTTR выход: длина (URL) == 1 не TRUE)

library(RSelenium) 
startServer() 
remDr <- remoteDriver() 
remDr <- remoteDriver(remoteServerAddr = "localhost" 
        , port = 4444L, browserName = "firefox") 
remDr$open() 
remDr$getStatus() 
remDr$navigate("http://www.kentkonut.com.tr/tr/modul/projeler/daire_fiyatlari.aspx?id=44") 

, что я не пробовал не 3: это еще один способ triger dopostback. он не перемещается.

base.url <- "http://www.kentkonut.com.tr/tr/modul/projeler/", 
event.target <- 'ctl00$ContentPlaceHolder1$DataList2$ctl03$lnk_blok', 
action <- "daire_fiyatlari.aspx?id=44" 

ftarget <- paste0(base.url, action) 
dum <- getURL(ftarget) 
event.val <- unlist(strsplit(dum,"__EVENTVALIDATION\" value=\""))[2] 
event.val <- unlist(strsplit(event.val,"\" />\r\n\r\n<script"))[1] 
view.state <- unlist(strsplit(dum,"id=\"__VIEWSTATE\" value=\""))[2] 
view.state <- unlist(strsplit(view.state,"\" />\r\n\r\n\r\n<script"))[1] 
web.data <- postForm(ftarget, "form name" = "ctl00_ContentPlaceHolder1_DataList2_ctl03_lnk_blok", 
        "method" = "POST", 
        "action" = action, 
        "id" = "ctl00_ContentPlaceHolder1_DataList2_ctl03_lnk_blok", 
        "__EVENTTARGET"=event.target, 
        "__EVENTVALIDATION"=event.val, 
        "__VIEWSTATE"=view.state) 

благодарит за вашу помощь.

ответ

1
library(rvest)  
url<-"http://www.kentkonut.com.tr/tr/modul/projeler/daire_fiyatlari.aspx?id=44" 
    pgsession<-html_session(url) 
    t<-html_table(html_nodes(read_html(pgsession), css = "#ctl00_ContentPlaceHolder1_DataList1"), fill= TRUE)[[1]] 
    even_indices<-seq(2,length(t$X1),2) 
    t<-t[even_indices,] 
    t<-t[2:(length(t$X1)),] 

EDITED КОД:

library(rvest)  
url<-"http://www.kentkonut.com.tr/tr/modul/projeler/daire_fiyatlari.aspx?id=44" 
pgsession<-html_session(url) 
pgform<-html_form(pgsession)[[1]] 
page<-rvest:::request_POST(pgsession,"http://www.kentkonut.com.tr/tr/modul/projeler/daire_fiyatlari.aspx?id=44", 
          body=list(
          `__VIEWSTATE`=pgform$fields$`__VIEWSTATE`$value, 
          `__EVENTTARGET`="ctl00$ContentPlaceHolder1$DataList2$ctl01$lnk_blok", 
          `__EVENTARGUMENT`="", 
          `__VIEWSTATEGENERATOR`=pgform$fields$`__VIEWSTATEGENERATOR`$value, 
          `__VIEWSTATEENCRYPTED`=pgform$fields$`__VIEWSTATEENCRYPTED`$value, 
          `__EVENTVALIDATION`=pgform$fields$`__EVENTVALIDATION`$value 
          ), 
          encode="form" 
          ) 
# in the above example change eventtarget as "ctl00$ContentPlaceHolder1$DataList2$ctl02$lnk_blok" to get different table 

t<-html_table(html_nodes(read_html(page), css = "#ctl00_ContentPlaceHolder1_DataList1"), fill= TRUE)[[1]] 
even_indices<-seq(2,length(t$X1),2) 
t<-t[even_indices,] 
t<-t[2:(length(t$X1)),] 
+0

благодаря @Bharath вашем пути адресности таблицы очень ясно, спасибо. то, что мне нужно, чтобы сканировать с этого сайта, не нащупывает идентификаторы страниц, кроме подстраниц, которые появляются при нажатии на BLOK 16 B или BLOK 16 C путем запуска js ctl00 $ ContentPlaceHolder1 $ DataList2 $ ctl00 $ lnk_blok ctl00 $ ContentPlaceHolder1 $ DataList2 $ ctl01 $ lnk_blok ctl00 $ ContentPlaceHolder1 $ DataList2 $ ctl02 $ lnk_blok ctl00 $ ContentPlaceHolder1 $ DataList2 $ ctl03 $ lnk_blok –

+0

Итак, вы хотите перейти на эти страницы? http://www.kentkonut.com.tr/tr/modul/projeler/daire_detay.aspx?id=44&blok=318&daire=01 http://www.kentkonut.com.tr/tr/modul/projeler/daire_detay .aspx? id = 44 & blok = 318 & daire = 02 – Bharath

+0

извините, нет, когда вы нажимаете желтые ссылки на этом рис. https://postimg.org/image/edbocvd3z/ URL-адрес не изменяется, но ниже изменений таблицы –

Смежные вопросы