梦魇JS` .goto(url)`循环

时间:2017-08-28 23:54:38

标签: javascript loops web-scraping nightmare

我正在制作一个登录网站的恶梦JS脚本,根据表格中的结果构建链接列表,然后打开每个链接。在打开的每个链接上,一些信息被删除并添加到最终结果中。

我在打开每个链接的循环中遇到了很多麻烦。由于网站的限制,此过程必须是同步的。

以下是我到目前为止的一个非常简单的例子,以及我将要归还的内容。

我是这个图书馆的新人,虽然我一直在查看文档,但我发现它很混乱。

关于让.goto()循环工作的任何建议?

const Nightmare = require('nightmare')
const moment = require('moment')

const opts = {
  show: true,
  openDevTools: { mode: 'detach' },
  pollInterval: 250,
  waitTimeout: 10000,
  webPreferences: {
    webSecurity: false
  }
}

const nightmare = Nightmare(opts)

nightmare
  .goto('https://www.google.co.nz/')
  .evaluate(links => {
    var allHrefs = document.querySelectorAll('#fbar #fsl a')
    var allLinks = []
    allHrefs.forEach(function(a) {
      allLinks.push(a.href)
    })

    console.log('allLinks:', allLinks)

    return allLinks
  }, '.what')
  .end()
  .then(result => {
    console.log('result:', result)
    let titles = []
    result.forEach(link => {
      return nightmare
        .goto(link)
        .wait('#navheader')
        .evaluate(getTitle => {
          var thisTitle = document.title
          console.log('this title:', thisTitle)
          titles.push(thisTitle)
        })
    })
    console.log('titles:', titles)
    return titles
  })

在这里,运行脚本后控制台结果:

$ node scripts/nm_test.js 
result: [ 'https://www.google.co.nz/intl/en/ads/?fg=1',
  'https://www.google.co.nz/services/?fg=1',
  'https://www.google.co.nz/intl/en/about.html?fg=1' ]
titles: []

0 个答案:

没有答案