2016-12-29 53 views
0

https://titans.strmarketplace.com/Permanent-Seat-Licenses/Permanent-Seat-Licenses.aspx如何從網站中提取數據,該網站的表格需要滾動才能顯示所有數據?

本網站有一張表格,一次只能顯示100行。您需要進一步滾動以顯示更多行。我正在使用Node.js和Horseman + PhantomJS來取消數據,但是我想要找到一種有效的方式來刮取整個表格,而不是一次只有100行。

var h = new Horseman({timeout: 20000}); 

h 
.open("https://titans.strmarketplace.com/Permanent-Seat-Licenses/Permanent-Seat-Licenses.aspx") 
    .waitForSelector("table.GridListings") 
    .text("td.ListingID") 
    .then(function(data) { 
     console.log(data); 
    }); 

可以進一步修改,滾動整個表並獲取所有數據?

+0

檢查javascript呈現 – eLRuLL

+0

@eLRuLL嘗試了$(「。ListingID」).text(),僅顯示前100個結果。 –

回答

0

您可以使用.scrollTo(top, left)滾動到頁面底部並繼續操作,直到一段時間沒有加載新內容。

然後你可以檢查應該填充所有字段的表。

+0

謝謝。它的工作原理,但我希望有一個更有效的方法。還有其他建議嗎? –

+0

@AhanasiosCanko你可以做的唯一的其他事情就是進入該網站,打開控制檯,查看網絡連接並查看實際正在傳輸的數據以及來自哪些網址,然後將這些URL一起使用,將所有必填字段和頭部可以在不使用網站的情況下訪問相同的數據 - 但要確保在執行操作時不會違反任何條款和條件。我很高興它的工作。 – rsp

0

使用phantomjs實例javascript和scrooll評估到底

.evaluate(function() { 
     window.scrollTo(0,document.body.scrollHeight); 
    }); 
+1

你能提供你的代碼的解釋嗎? 「簡潔是可以接受的,但更全面的解釋會更好。」請參閱:[如何編寫一個好的答案?](http://stackoverflow.com/help/how-to-answer) – gfullam

+0

它只是使用phantomjs實例來評估javascript,scrooll到windows底部 – Dalton

0

我想窗口,在這種情況下,你應該滾動(.scrollTo(上左)方法),並等待(可能,.waitFor(FN ,[arg1,arg2,...],value)方法)來重新填充表。我想,您應該重複這些操作,直到表格中的行數等於「結果摘要」區塊中的「列表數量」。