2015-10-19 50 views
0

有什麼辦法湊超出這個第一頁:與不變的URL和JS的Python刮頁面鏈接

https://www.sportstats.ca/display-results.xhtml?raceid=23666

我已經試過硒在過去有過不同程度的成功。我覺得它很沉重,有時它不起作用,有時會掛起。如果可能,我寧願避免它,只是使用urllib.request,並使用標頭/ cookies來查找我正在查找的數據。

這些路障:

1)當你去到另一個網頁的URL不會改變。

2)鏈接進入下一個頁面(例如)是JS什麼的,是不容易處理:

<li><a id="mainForm:j_idt341" href="#" class="ui-commandlink ui-widget fa fa-angle-right" onclick="PrimeFaces.ab({s:&quot;mainForm:j_idt341&quot;,p:&quot;mainForm&quot;,u:&quot;mainForm:result_table mainForm:pageNav mainForm:eventAthleteDetailsDialog&quot;,onco:function(xhr,status,args){hideDetails('athlete-popup');showDetails('event-popup');scrollToTopOfElement('mainForm\\:result_table');;}});return false;"></a> 

任何人都可以點我在正確的方向,通過這種走路,刮每一頁。

+0

爲什麼你刪除了這個問題?我正在研究它20分鐘,最後得到了一個解決方案。請取消刪除它:http://stackoverflow.com/questions/33427870/python-selenium-scrape-hidden-data。 – alecxe

回答

0

我認爲你可以用硒來做到這一點,而沒有太多麻煩。按鈕的ID按照「mainForm:j_idt336::j_idt338」的模式遞增。您可以通過ID查找Selenium中的按鈕,您可以單獨使用「>」按鈕向前移動,也可以通過它的ID進行操作。 這個ID好像是以某種方式生成的,但是你可以讓你的硒腳本將這個格式作爲參數,並且創建另一個腳本來獲得這個ID格式。 也看看mechanize

+0

使用Selinium,即使在我點擊下一頁後,底層源代碼經常(不一致)再次返回第一頁。而且似乎沒有等待/刷新/再次點擊的組合可以使它「脫鉤」並使其前進。 – user3449833

+0

在我看來,問題的出現是因爲在獲取新內容時頁面尚未加載。嘗試從這裏應用一些提示:http://stackoverflow.com/questions/10720325/selenium-webdriver-wait-for-complex-page-with-javascriptjs-to-load。 – gplayer