Tôi đã sử dụng hai cách khác nhau trong quá khứ, trong đó có phương pháp page.evaluate() mà truy vấn DOM mà Declan đã đề cập. Một cách khác tôi đã chuyển thông tin từ trang web là để nhổ nó ra để console.log() từ đó, và trong việc sử dụng phantomjs kịch bản:
page.onConsoleMessage = function (msg, line, source) {
console.log('console [' +source +':' +line +']> ' +msg);
}
tôi có thể cũng bẫy msg biến trong onConsoleMessage và tìm kiếm một số dữ liệu đóng gói. Phụ thuộc vào cách bạn muốn sử dụng đầu ra.
Sau đó, trong kịch bản Nodejs, bạn sẽ phải quét đầu ra của kịch bản Phantomjs:
var yourfunc = function(...params...) {
var phantom = spawn('phantomjs', [...args]);
phantom.stdout.setEncoding('utf8');
phantom.stdout.on('data', function(data) {
//parse or echo data
var str_phantom_output = data.toString();
// The above will get triggered one or more times, so you'll need to
// add code to parse for whatever info you're expecting from the browser
});
phantom.stderr.on('data', function(data) {
// do something with error data
});
phantom.on('exit', function(code) {
if (code !== 0) {
// console.log('phantomjs exited with code ' +code);
} else {
// clean exit: do something else such as a passed-in callback
}
});
}
Hy vọng rằng sẽ giúp một số.
Bạn đang tìm cách thực hiện phía máy khách này hoặc phía máy chủ? –
@DeclanCook serverside Tôi nghĩ vậy? Clientside sẽ yêu cầu người dùng cài đặt phantom phải không? Mà sẽ không hoạt động nếu tôi hiểu chính xác. Cảm ơn – Harry
Bạn đang cố gắng làm gì với html khi bạn có nó? Cố gắng để có được đầu của tôi xung quanh những gì bạn đang cố gắng để đạt được. Phantomjs có thao tác dom nhìn thấy http://code.google.com/p/phantomjs/wiki/QuickStart#DOM_Manipulation là bạn sau đó sẽ gửi điều này ở đâu đó? –