在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/HTML/ 爬蟲:期望自動(dòng)打開多個(gè)網(wǎng)頁(yè)中標(biāo)題包含aaa的網(wǎng)頁(yè)鏈接,但想重復(fù)調(diào)用nightma

爬蟲:期望自動(dòng)打開多個(gè)網(wǎng)頁(yè)中標(biāo)題包含aaa的網(wǎng)頁(yè)鏈接,但想重復(fù)調(diào)用nightmare始終不成功,求助!

1、需求:期望自動(dòng)打開頁(yè)碼是1-10的網(wǎng)頁(yè)中,標(biāo)題包含aaa的網(wǎng)頁(yè)鏈接;
2、目前打開一頁(yè)是可以的,但是我希望自動(dòng)執(zhí)行多個(gè)頁(yè)面;
3、請(qǐng)問(wèn)我如何重復(fù)多次調(diào)用nightmare抓取從第1頁(yè)到第10頁(yè)的鏈接數(shù)據(jù)(即調(diào)用10次nightmare)?async和eventproxy都試了,沒有成功,求助!

var c = require('child_process');
var request = require('request');
var cheerio = require('cheerio');
var path = require('path');
var fs = require('fs');
var Nightmare = require('nightmare');       
var nightmare = Nightmare({}); //  show: true
var async = require('async');
var EventProxy = require('eventproxy');
var baseUrl = 'http://www.abc.cn';
var requrl = 'http://www.abc.cn/index.html?uid=123456&pageNum=';   //1.先輸入要訪問(wèn)的URL

var startPage = 1;
var endPage = 10;

// how to fix the code ...

function getPageUrls(page) {
  nightmare
  // 加載頁(yè)面
  .goto(requrl + page)
  //  .type('#search_form_input_homepage', 'github nightmare')
  .inject('js', './js/jquery.min.js')
  // 點(diǎn)擊刷新獲得真實(shí)數(shù)據(jù),不然僅通過(guò)鏈接并不會(huì)真實(shí)更新數(shù)據(jù)
  .click('.default_pgRefresh')
  // 等待選擇器加載完畢,可以用數(shù)值(表示等待時(shí)間,單位毫秒),必須!??!
  .wait(6000)
  // 瀏覽器內(nèi)頁(yè)面執(zhí)行,獲得列表數(shù)據(jù)
  .evaluate(function () {
    return document.querySelector('.default_pgContainer').innerHTML;
    // return document.querySelector('#zero_click_wrapper .c-info__title a').href;
  })
  .end()
  .then(function (result) { // 重要:函數(shù)參數(shù)為evaluate的返回值?。。?    acquireData(result);  // 返回?cái)?shù)據(jù)
  })
  .catch(function (error) {
    // console.error('Search failed:', error);
  });
}

function acquireData(data) {
    var $ = cheerio.load(data); 
    var tableData = $('li').toArray();
    // console.log(tableData.length);
    // console.log(tableData);

    // li列表數(shù)據(jù)
    let mainLength = tableData.length;
    var gg = 0, gs = 0;

    for (var i=0; i<mainLength; i++) {
          let tempData = tableData[i];

          let title = tempData['children'][1].attribs.title;
          let detailUrl = tempData['children'][1].attribs.href;

          if (title.indexOf("aaa") > 0) {
              c.exec('start ' + baseUrl + detailUrl);
              console.log(baseUrl + detailUrl);
          }
     }  

}



回答
編輯回答
司令

你先把10個(gè)頁(yè)面的鏈接得到,一個(gè)一個(gè)的爬不就好了

2017年12月4日 23:08
編輯回答
你好胸

解決了,屬于nightmare在循環(huán)中使用的問(wèn)題,代碼如下:

async function main() {
  var urls = [
    'http://www.abc.cn/index.html?uid=123456&pageNum=60',
    'http://www.abc.cn/index.html?uid=123456&pageNum=61',
    'http://www.abc.cn/index.html?uid=123456&pageNum=62'
  ]

  var nightmare = Nightmare({ show: true })

  for (let j = 0; j < urls.length; j++) {
    const url = urls[j]
    const title = await nightmare
    .goto(url)
    //  .type('#search_form_input_homepage', 'github nightmare')
    .inject('js', './js/jquery.min.js')
    // 點(diǎn)擊刷新獲得真實(shí)數(shù)據(jù),不然僅通過(guò)鏈接并不會(huì)獲得真實(shí)數(shù)據(jù)
    .click('.default_pgRefresh')
    // 等待選擇器加載完畢,可以用數(shù)值(表示等待時(shí)間,單位毫秒),必須!?。?    .wait(5000)
    // 瀏覽器內(nèi)頁(yè)面執(zhí)行,獲得列表數(shù)據(jù)
    .evaluate(function () {
      return document.querySelector('.default_pgContainer').innerHTML;
      // return document.querySelector('#zero_click_wrapper .c-info__title a').href;
    })
    // .end() 注釋
    .then(function (result) { // 重要:函數(shù)參數(shù)為evaluate的返回值?。?!
      // console.log(result);
      acquireData(result);
      // console.log('aaa' + j);
    })
    .catch(function (error) {
      // console.error('Search failed:', error);
    });

    // console.log(title)
  }

  await nightmare.end()
}

main().catch(console.error)
2017年10月2日 01:15