2016-12-29 10 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 Пробовал $ (".INIDID"). Text() отображает только первые 100 результатов. –

ответ

0

Вы можете использовать .scrollTo(top, left), чтобы прокручивать нижнюю часть страницы и продолжать делать это до тех пор, пока в течение некоторого времени не будет загружено новое содержимое.

Затем вы можете проверить таблицу, в которой должны быть заполнены все поля.

+0

Спасибо. Это работает, но я надеялся на более эффективный метод. Любые другие предложения? –

+0

@AthanasiosCanko Единственное, что вы могли бы сделать, это перейти на этот веб-сайт, открыть консоль, увидеть сетевые подключения и посмотреть, какие данные фактически передаются и с каких URL-адресов, а затем использовать эти URL-адреса вместе, все необходимые поля и чтобы получить доступ к тем же данным без использования веб-сайта, но убедитесь, что вы не нарушаете никаких условий и условий, пока вы это делаете. Я рад, что это сработало. – rsp

0

Используйте phantomjs экземпляр для оценки яваскрипт и scrooll для окон нижних

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

Можете ли вы предоставить объяснение своего кода? «Брешивость приемлема, но более полные объяснения лучше». См.: [Как написать хороший ответ?] (Http://stackoverflow.com/help/how-to-answer) – gfullam

+0

он просто использует экземпляр phantomjs для оценки javascript, который скручивается до дна окна – Dalton

0

Я думаю, в этом случае вы должны прокручивать ((верхний, левый метод .scrollTo)) и ждать (вероятно, .waitFor (Fn , [arg1, arg2, ...], value)) для репопуляции таблицы. Я думаю, вы должны повторить действия до тех пор, пока количество строк в таблице не станет равным «количеству листинга» в блоке «Результаты».