2017-06-17 31 views
-1

我的應用程序需要刮掉從WTA網站數據:單排名和單路的排名(從球員排名第一的球員,以排名第1000)。排名可通過以下鏈接訪問:http://www.wtatennis.com/rankings如何檢索通過鏈接訪問隱藏的網址掐滅以「#」

就在描繪兩個單一排名類別中排名第一的球員的照片下面,有一個菜單可以訪問所有排名類別:單人,雙打,保時捷比賽單打,保時捷比賽雙打。問題是,點擊這些鏈接瀏覽器地址欄中的網址不會改變。 Web檢查員顯示這些鏈接全部使用與href="#"相同的<a>標籤創建。

http://www.wtatennis.com/rankings url默認顯示單個排名前100位玩家,所以我認爲應該有一個隱藏的url專用於道路排名頁面。起初,我想到了使用標籤導航組織的單個文檔,但是網絡檢查員表明他們都是不同的頁面。

向下滾動頁面到列表的底部,可以看到,上面的第100位排名的球員都是通過分頁訪問。分頁鏈接也掐滅與’#’

<a class="footable-page-link" href="#">1</a> 
<a class="footable-page-link" href="#">2</a> 
<a class="footable-page-link" href="#">3</a> 
... 

因此,即使是在信息以上的玩家數量排名100的網址是隱藏的。

有什麼辦法可以訪問所有這些隱藏的網址嗎?
我寫了一封信,ATP的副總裁兼總法律顧問,我得到了他使用這些網址的權限,但是當我明確地問他的第二封信中提供這樣的信息,他回答說:「這些網址是所有在我們的網站和WTA網站上公開發布「。他認爲自己有這個權利,他可能有更重要的事情要做,而不是與我私下通信(我懷疑第三封信會令人討厭),但我認爲我可能根本缺乏從他那裏獲取的知識他們的網站。

回答

3

作爲一般規則,如果你看到

<a href="#">...</a> 

<a href="javascript:void(0)">...</a> 
在頁面

,這意味着你正在尋找由JavaScript控制一個鏈接:該鏈接的點擊被捕獲通過一個事件監聽器,通常在頁面或祖先元素上,而「鏈接」的行爲就是做JavaScript所做的任何事情。

對於您正在查看的頁面,數據完全通過Ajax調用加載,由JavaScript啓動:JS調用回當前頁面的服務器,並獲取一個scores.json blob然後用來重建表格。當你點擊其中一個分頁鏈接時,另一個Ajax調用就會被觸發,頁面也會相應地被重建。 (您可以在檢查員的「網絡」選項卡上觀察Ajax呼叫及其響應。)

因此沒有其他頁面的鏈接,因此沒有「隱藏的URL」供您獲取:只有一個頁面,並在您點擊時使用新數據重建 - 所謂的「單頁應用程序」(SPA)。

+0

我明白。我想我不得不放棄使用Nokogiri從SPA中颳去內容。 – Asarluhi

+1

是的,任何只關注HTML並忽略JavaScript的東西都可能無法理解單頁應用程序中的任何東西。 –

相關問題