2017-09-20 6 views
1

Iは、Iが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) 

結果

:データが見つかりません!!!!

また、私はExcelファイルを取得する方法を知って興味がある(小さなエクセルのアイコンを参照してください)

+0

PhantomJSをソリューションとして明示的に除外する理由はありますか?いくつかのケースでは、PhantomJS、RSeleniumなどのようなデータを掻き集めることは不可能です。それを調べなければ、おそらくあなたの質問を解決することができないでしょう。 – TomS

+0

@TomS私たちの環境内では、phantomJSを許可しないシステム要件です。 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

本当に涼しい!スクラップから始まり、既にJavaでいくつかの問題が発生しました。 RSelenium。しかし、V8パッケージにはまったく出くわしませんでしたが、結果は本当に良く見えます。ありがとう! – TomS

関連する問題