我正在制作一个登录网站的恶梦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: []