Nightmarejs загружает страницу, затем нажимает несколько ссылок на страницы и собирает информацию на каждой странице

Я пытаюсь получить информацию с веб-сайта, где информация разбита на страницы. Приведенный ниже код работает и собирать заголовки для каждого элемента в списке с первой страницы. Затем это сохраняется как JSON в файл. Проблема в том, что ссылки на разные страницы внизу выглядят так:

<a href="javascript:__doPostBack('some data1..','')">1</a>
<a href="javascript:__doPostBack('some data2..','')">2</a>

Что я хочу сделать, это:

1. Load the first url
2. Click each pagination link at the bottom to visit that page (Eg. pages 1,2,3,4,5)
2a. On each page, I want to collect the information like I've done in the script below.
3. This can then either be saved per page or together in a json file like in the code below.

Решение должно решить, как загрузить страницу, а затем нажать на несколько ссылок и собрать информацию на каждой странице.

var Nightmare = require('nightmare');
var nightmare = Nightmare({ show: true });
var fs = require('fs');

var config = require('./config.json');

nightmare
    .goto('some url...')
    .wait('table.gridlist')
    .inject('.js','jquery.js')
    .evaluate(function(){
        var json = [];
        $('table.gridlist tr.listitem-even').each(function() {
            var $tds = $(this).find('td');
            if($tds.length) {
                var item = {title:''};
                item.title = $tds.eq(1).find('a').eq(0).text();    
                json.push(item);
            }
        });
        return json;
    })
    .end()
    .then(function (result) {
        var dt = new Date();
        var time = dt.getHours() + "-" + dt.getMinutes() + "-" + dt.getSeconds();
        var filename = config.base_path+'files/'+time+'.json'
        fs.writeFile(filename, JSON.stringify(result), function(err) {
            if (err)
                return console.log(err);
            console.log('Saved json data to '+filename);
        });
        console.log(result)
    })
    .catch(function (error) {
        console.error('Search failed:', error);
    });

0 ответов

Другие вопросы по тегам