2014-06-20 99 views
2

我想刮這樣的表http://www.oddsportal.com//hockey/usa/nhl/carolina-hurricanes-ottawa-senators-80YZhBGC/ 我想刮博彩公司和賠率。問題是我不知道什麼樣的桌子,也不知道怎麼刮。與R刮xml/javascript表

這些線程可能會幫助我(Scraping javascript with RWhat type of HTML table is this and what type of webscraping techniques can you use?),但我會很感激,如果有人能指向我在正確的方向或更好,但在這裏給說明。

那麼什麼樣的表是那個賠率表,是否有可能用R刮,如果是的話,怎麼樣?

編輯: 我應該更清楚。我已經用R讀了一段時間的數據,可能不需要基礎知識的幫助。經進一步檢查那個表實際上是JavaScript,這是問題,我需要

+0

看看[刮HTML表格分爲R數據幀使用XML封裝(http://stackoverflow.com/questions/ 1395528/scraping-html-tables-into-r-data-frames-using-the-xml-package) – rrs

+0

我已經非常廣泛地閱讀了該線程,但它並未幫助我處理該特定表。使用這些說明,我已經輕鬆地刮掉了其他幾張桌子。例如,如果我用表< - readHTMLTable(theurl)讀取url,主賠率表不在那裏。如果我仔細檢查oddsportal來源,我也無法找到這些數字,但在您提供的鏈接中使用的巴西維基百科表格中並非如此。恐怕我可能需要更多幫助 – lunatus

+0

使用javascript/web dev調試器來查看頁面正在發出什麼請求 - 它可能只是一個json數據請求,並且不需要進行刮取,您的R可以直接獲取JSON數據。也許。它對我來說只是緩慢而可怕的。 – Spacedman

回答

2

您可以使用硒和RSelenium來獲得相關的數據:

library(RSelenium) 
appURL <- "http://www.oddsportal.com//hockey/usa/nhl/carolina-hurricanes-ottawa-senators-80YZhBGC" 
RSelenium::startServer() 
remDr <- remoteDriver() 
remDr$open() 
remDr$navigate(appURL) 
tblSource <- remDr$executeScript("return tbls[0].outerHTML;")[[1]] 
readHTMLTable(tblSource) 
> readHTMLTable(tblSource) 
$`NULL` 
Bookmakers 1 X 2 Payout 
1  bet-at-home  2.25 3.80 2.60 91.6% 
2  Â bet365Â Â 2.29 3.79 2.64 92.7% 
3   Betsson  2.35 3.75 2.65 93.5% 
4    bwin  2.30 3.75 2.70 93.3% 
5  MarathonBet  2.35 3.80 2.78 95.4% 
6   Titanbet  2.30 3.95 2.50 91.9% 
7   TonyBet  2.35 3.70 2.70 93.8% 
8   Unibet  2.35 3.85 2.60 93.5% 
9  William Hill  2.30 3.90 2.50 91.6% 
10   Winner  2.30 3.95 2.50 91.9% 
11   youwin  2.40 3.75 2.55 93.0% 
+0

非常感謝你!閱讀這個http://cran.r-project.org/web/packages/RSelenium/vignettes/RSelenium-basics.html和一些試驗和錯誤後,這工作得很好!我確信我可以通過回調調用瞭解這一​​點,但對我來說這顯然更容易。 – lunatus

+0

樂於幫助... – jdharrison

+0

@jdharrison你是否在意解釋如何找到表是tbls [0] .outerHTML? – MLEN

2

的「天堂」的數據來自一個JavaScript回調資源的請求幫助:

GET /x/bookies-140619144601-1403252087.js HTTP/1.1 
Host: rb.oddsportal.com 
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:30.0) Gecko/20100101 Firefox/30.0 
Accept: */* 
Accept-Language: en-US,en;q=0.5 
Accept-Encoding: gzip, deflate 
Referer: http://www.oddsportal.com//hockey/usa/nhl/carolina-hurricanes-ottawa-senators-80YZhBGC/ 
Connection: keep-alive 

它返回一個回調資源那有bookie信息,但沒有可能性。還有其他的回調AJAX調用數據,但你必須挖掘。

Burp Proxy是查看URI調用的好方法,但DOM檢查(如@Spacedman建議的)應始終是您的第一行調查。