긁어

2017-09-20 4 views
1

내가, 내가 rvest 및 RCurl하지만 두 경우 모두를 시도긁어

https://www.mcxindia.com/market-data/spot-market-price

아래 페이지에서 테이블을 추출하기 위해 도착 페이지를 원하는 rvest 또는 RCurl 또는 HTTR를 사용하여 R의 페이지 다운로드 한 내용이 브라우저에서 보는 것과 다릅니다. 나는 감지하거나 어떤 도움을 주시면 감사하겠습니다

에 따라 드릴 수 없습니다 리디렉션의 형태가 가정입니다

PS :

: phantomjs

이것은 내가 지금까지 시도 무엇에 관심이 없음

1 HTTR

base_url <- "https://www.mcxindia.com/market-data/spot-market-price" ua <- "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8" library(httr) library(XML) doc <- POST(base_url,user_agent(ua),set_cookies(`_ga` = "GA1.2.543290785.1505100652",`_gid`="GA1.2.1409943545.1505881384",`_gat`="1")) doc <- htmlParse(doc) poptable<-readHTMLTable(doc,which=7) 

결과

: 데이터 없음 !!!!

2 RCurl

library(RCurl) curl <- getCurlHandle() curlSetOpt(curl = curl, ssl.verifypeer = FALSE, useragent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8", timeout = 60, followlocation = TRUE, cookiejar = "./cookies", cookiefile = "./cookies") newDoc = getURL("https://www.mcxindia.com/market-data/spot-market-price", curl=curl) newDoc <- htmlParse(newDoc) poptable<-readHTMLTable(newDoc,which=7) 

결과

: 데이터 없음 !!!!

또한 나는 (작은 엑셀 아이콘이 표시)

+0

PhantomJS를 솔루션으로 명시 적으로 제외하는 이유가 있습니까? 경우에 따라 PhantomJS, RSelenium 또는 그와 유사한 데이터를 스크래핑하는 것은 불가능합니다. 그것을 들여다 보지 않고 질문을 해결하는 것이 가능하지 않을 수도 있습니다. – TomS

+0

@TomS 우리의 환경에서 팬텀을 허용하지 않는 시스템 요구 사항입니다. rvest를 사용하는 것이 가능합니다. 필자가 끝내면 코드를 완성한 후에 대답을 게시 할 것이다. 나는 가까웠다. ... –

+0

그러나 당신은 예를 들어. RSelenium PhantomJS는 어떤 종류의 설치가 필요하지 않습니까? 내 작업 기계에도 관리자 권한이 없지만 제대로 작동합니다. 그러나 rvest 만 사용하는 솔루션 (예 : httr)에 가까이 있다면 나는 그 점에 대한 지식이 부족하기 때문에 읽고 배우게되어 기쁩니다. :) – TomS

답변

2

여기

library(rvest) 
library(stringi) 
library(V8) 

    ctx <- v8() 
    pg <- read_html("https://www.mcxindia.com/market-data/spot-market-price") 
    html_nodes(pg, xpath=".//script[contains(., 'Data')]")[[1]] %>% 
    html_text() %>% stri_unescape_unicode() %>% stri_replace_all_fixed('\\\\', '')%>% 
    ctx$eval() -> ignore_the_blank_return_value 
    data <- ctx$get("vSMP")$Data[,c("Symbol","TodaysSpotPrice","Unit")] 

즐기 대답을있는 엑셀 파일을 얻는 방법을 알고 관심을 가질 것입니다!

+0

정말 멋지다! 스크래핑으로 시작하여 이미 자바와 관련된 몇 가지 문제를 겪었습니다. RSelenium. V8 패키지를 보지 못했지만 결과는 정말 좋아 보인다. 감사! – TomS