从 Nightmare.js 返回 HTML 正文
Returning HTML body from Nightmare.js
我目前正在使用 cheerio
和 nightmare
进行一些抓取。我同时使用两者而不仅仅是 cheerio
的原因是因为我必须操纵网站才能到达我想要抓取的部分,而且我发现 nightmare 非常擅长执行这些脚本。
所以,现在我正在使用 nightmare
来获取显示我需要的信息的部分。之后,在 evaluate()
上,我试图以某种方式 return 当前 html
然后将其传递给 cheerio
进行抓取。问题是我不知道如何从 document
对象中检索 html。 document
有没有 属性 那就是 return 的全身?
这是我正在尝试做的事情:
var Nightmare = require('nightmare');
var nightmare = Nightmare({show:true})
var express = require('express');
var fs = require('fs');
var request = require('request');
var cheerio = require('cheerio');
var app = express();
var urlWeb = "url";
var selectCity = "#ddl_city"
nightmare
.goto(urlWeb)
.wait(selectCity)
.select('#ddl_city', '19')
.wait(6000)
.select('#ddl_theater', '12')
.wait(1000)
.click('#btn_enter')
.wait('#aspnetForm')
.evaluate(function(){
//here is where I want to return the html body
return document.html;
})
.then(function(body){
//loading html body to cheerio
var $ = cheerio.load(body);
console.log(body);
})
有了这个工作:
document.body.innerHTML
我目前正在使用 cheerio
和 nightmare
进行一些抓取。我同时使用两者而不仅仅是 cheerio
的原因是因为我必须操纵网站才能到达我想要抓取的部分,而且我发现 nightmare 非常擅长执行这些脚本。
所以,现在我正在使用 nightmare
来获取显示我需要的信息的部分。之后,在 evaluate()
上,我试图以某种方式 return 当前 html
然后将其传递给 cheerio
进行抓取。问题是我不知道如何从 document
对象中检索 html。 document
有没有 属性 那就是 return 的全身?
这是我正在尝试做的事情:
var Nightmare = require('nightmare');
var nightmare = Nightmare({show:true})
var express = require('express');
var fs = require('fs');
var request = require('request');
var cheerio = require('cheerio');
var app = express();
var urlWeb = "url";
var selectCity = "#ddl_city"
nightmare
.goto(urlWeb)
.wait(selectCity)
.select('#ddl_city', '19')
.wait(6000)
.select('#ddl_theater', '12')
.wait(1000)
.click('#btn_enter')
.wait('#aspnetForm')
.evaluate(function(){
//here is where I want to return the html body
return document.html;
})
.then(function(body){
//loading html body to cheerio
var $ = cheerio.load(body);
console.log(body);
})
有了这个工作:
document.body.innerHTML