【发布时间】:2018-03-27 12:01:20
【问题描述】:
我想刮this site。 我将 Node.js 和 Phantom.js 与 Phantom 一起使用。 这是我的代码:
var phantom = require('phantom');
var loadInProgress = false;
var url = 'http://apps.who.int/flumart/Default?ReportNo=12';
(async function() {
const instance = await phantom.create();
const page = await instance.createPage();
await page.on('onResourceRequested', function(requestData) {
console.info('Requesting', requestData.url);
});
await page.on('onConsoleMessage', function(msg) {
console.info(msg);
});
await page.on('onLoadStarted', function() {
loadInProgress = true;
console.log('Load started...');
});
await page.on('onLoadFinished', function() {
loadInProgress = false;
console.log('Load end');
});
const status = await page.open(url);
await console.log('STATUS:', status);
const content = await page.property('content');
await console.log('CONTENT:', content);
// submit
await page.evaluate(function() {
document.getElementById('lblFilteBy').value = 'Country, area or territory'; //'WHO region';
document.getElementById('lblSelectBy').value = 'Italy'; //'European Region of WHO';
document.getElementById('lbl_YearFrom').value = '1995';
document.getElementById('lbl_WeekFrom').value = '1';
document.getElementById('lbl_YearTo').value = '2018';
document.getElementById('ctl_list_WeekTo').value = '53';
//console.log('SUBMIT:', document.getElementById('ctl_ViewReport'));
document.getElementById('ctl_ViewReport').submit();
});
var result = await page.evaluate(function() {
return document.querySelectorAll('html')[0].outerHTML; // Problem here
});
await console.log('RESULT:', result);
await instance.exit();
}());
不是 HTML,如何抓取显示的数据?
谢谢!
编辑 1
如果我转到 Chrome 开发工具的“网络”标签:
【问题讨论】:
-
看起来像是一个java小程序。 HTML 源代码可以告诉你它是什么类型的对象。
-
@EriksKlotins 谢谢,但你能更准确一点吗?
-
您的 html 中的某处应该是
-
@EriksKlotins 我从 Chrome 中进行了 View page source 并查找了 embed 和 object。他什么也没找到……
-
好的,我查看了网站。它是动态插入的 MS Report Viewer。您无法从 html 中抓取任何内容。
标签: node.js web-scraping phantomjs