我一直在尝试用node抓取一个Omnik公共页面.ashx。
一个带有图形用户界面的示例页面(不是我的):https://www.omnikportal.com/AjaxService.ashx?ac=upTerminalMain&psid=202&random=0.5716648780507967
我希望在此页面的节点文件中获得的统计信息可以在以下位置找到:https://www.omnikportal.com/AjaxService.ashx?ac=upTerminalMain&psid=202&random=0.5716648780507967
我认为这将是非常简单的,但是我尝试过的每个解决方案(request、request-promise、puppeteer和cheerio的使用)都不会返回一个我可以用来操作另一个array/json对象的值。
//Web scraping Omnik Portal Public
const request = require('request-promise'); //Ajax Request from other websites
const cheerio = require('cheerio'); //JQuery from node
var siteUrl = "https://www.omnikportal.com/AjaxService.ashx?ac=upTerminalMain&psid=202&random=0.5716648780507967";
request(siteUrl, (error, response, html) => {
if(!error && response.statusCode == 200) {
console.log(html);
}
});带有图形用户界面的页面对于抓取来说是没有问题的,但是每次我只想抓取.ashx页面时,它就会解析为空或json无效。
解决这个问题的最好方法是什么?
这是我的第二个小节点项目,因为我还在学习。
提前谢谢。
发布于 2020-01-08 23:51:42
使用一些浏览器自动化工具,如Nightmare,
export const scrapWithNightmare = (url: string): Promise<string> => {
return new Promise((resolve, reject) => {
nightmare
.goto(url)
.evaluate(function () {
return document.body.innerHTML;
})
.end()
.then((res) => {
resolve(res)
})
.catch(error => {
return reject(error);
});
})
}https://stackoverflow.com/questions/59035746
复制相似问题