我正在尝试使用Nightmare抓取有关动漫的数据的网站,并正在使用evaluate
函数在文档中运行querySelectorAll
。我想在Anime
函数中创建并返回一个evaluate
(非常简单的类,只有两个属性)数组。
这是我的代码:
const Nightmare = require('nightmare')
const URL = 'https://horriblesubs.info/shows/'
const browser = Nightmare({
show: true
})
class Anime {
constructor(name, url) {
this.name = name
this.url = url
}
}
browser
.goto(URL)
.evaluate(() => {
let shows = document.querySelectorAll('.ind-show')
var array = new Array()
shows.forEach((e, i) => {
array.push(
new Anime(e.textContent, e.firstChild.href)
)
})
return array
})
.then(shows => {
console.log(shows)
})
不幸的是,NodeJS告诉我未定义Anime类。如何解决或获得相同的结果?
答案 0 :(得分:0)
evaluate
函数参数是在浏览器上下文而不是测试中执行的。
您将返回一个简单的数组,并在Anime
函数中创建then
实例。
有关更多信息,请参见Nightmare evaluate
docs和this Nightmare issue discussion。