2016-12-29 118 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)方法)来重新填充表。我想,您应该重复这些操作,直到表格中的行数等于“结果摘要”区块中的“列表数量”。