Javascript 使用PhantomJS滚动页面-不工作
我正在尝试使用PhantomJS来滚动整个myactivity.google.com。如果你有一个有搜索历史记录的Google帐户,当你向下滚动到底部时,你就会知道你的历史记录会被动态加载。我试图滚动尽可能多,以便我可以有我的所有历史加载,然后我可以刮的数据,并把它在csv格式。关于PhantomJS的一本书中的以下滚动代码运行良好:Javascript 使用PhantomJS滚动页面-不工作,javascript,phantomjs,Javascript,Phantomjs,我正在尝试使用PhantomJS来滚动整个myactivity.google.com。如果你有一个有搜索历史记录的Google帐户,当你向下滚动到底部时,你就会知道你的历史记录会被动态加载。我试图滚动尽可能多,以便我可以有我的所有历史加载,然后我可以刮的数据,并把它在csv格式。关于PhantomJS的一本书中的以下滚动代码运行良好: var webpage = require('webpage').create(); webpage.viewportSize = { width: 1280,
var webpage = require('webpage').create();
webpage.viewportSize = { width: 1280, height: 800 };
webpage.scrollPosition = { top: 0, left: 0 };
webpage.open('https://twitter.com/founddrama', function(status) {
if (status === 'fail') {
console.error('webpage did not open successfully');
phantom.exit(1);
}
var i = 0,
top,
queryFn = function() {
return document.body.scrollHeight;
};
setInterval(function() {
var filename = 'twitter-' + (++i) + '.png';
console.log('Writing ' + filename + '...');
webpage.render(filename);
top = webpage.evaluate(queryFn);
console.log('[' + i + '] top = ' + top);
webpage.scrollPosition = { top: top + 1, left: 0 };
if (i >= 5) {
phantom.exit();
}
}, 3000);
});
终端输出:
Writing twitter-1.png...
[1] top = 5823
Writing twitter-2.png...
[2] top = 5604
Writing twitter-3.png...
[3] top = 10709
Writing twitter-4.png...
[4] top = 16047
Writing twitter-5.png...
[5] top = 21074
但当我试图使它适应我的:
console.log("It started here.");
var system = require('system');
var username = ''; // username for Google account goes here
var password = ''; // password goes here
var page = require('webpage').create();
page.viewportSize = { width: 1920, height: 1080 };
page.scrollPosition = { top: 0, left: 0 };
/*
page.open("http://www.google.com", function start(status) {
page.render('/Users/jMac-NEW/Documents/FILEMAKER OCLC/google_home3.png');
phantom.exit();
});*/
console.log("It is now here.");
page.open('https://accounts.google.com/Login?continue=https://myactivity.google.com/myactivity&hl=en', function () {
page.render('/Users/jMac-NEW/Documents/FILEMAKER OCLC/login_test15_brkpoint1.png');
page.evaluate(function (uid) {
var username_field = document.getElementById('Email');
username_field.value = uid;
/* var password_field = document.getElementById('id_password');
password_field.value = pwd;
var form = document.getElementById('login-form'); */
// form.submit();
}, username);
page.render('/Users/jMac-NEW/Documents/FILEMAKER OCLC/login_test15_brkpoint2.png');
page.evaluate(function () {
/* var password_field = document.getElementById('id_password');
password_field.value = pwd; */
var form = document.getElementById('gaia_loginform');
form.submit();
});
setTimeout( function() {
page.render('/Users/jMac-NEW/Documents/FILEMAKER OCLC/login_test15_brkpoint3.png');
page.evaluate(function (pid) {
var password_field = document.getElementById('Passwd');
password_field.value = pid;
/* var password_field = document.getElementById('id_password');
password_field.value = pwd;
var form = document.getElementById('login-form'); */
// form.submit();
console.log("Check if can log in a page.evaluate");
}, password);
page.render('/Users/jMac-NEW/Documents/FILEMAKER OCLC/login_test15_brkpoint4.png');
page.evaluate(function () {
/* var password_field = document.getElementById('id_password');
password_field.value = pwd; */
var form = document.getElementById('gaia_loginform');
console.log("Check if can log in a page.evaluate");
form.submit();
});
setTimeout( function () {
page.render('/Users/jMac-NEW/Documents/FILEMAKER OCLC/login_test15_brkpoint5.png');
var i = 5,
top,
queryFn = function() {
return document.body.scrollHeight;
};
setInterval(function() {
var filename = '/Users/jMac-NEW/Documents/FILEMAKER OCLC/login_test15_brkpoint' + (++i) + '.png';
console.log('Writing ' + filename + '...');
page.render(filename);
top = page.evaluate(queryFn);
console.log('[' + i + '] top = ' + top);
page.scrollPosition = { top: top + 1, left: 0 };
if (i >= 10) {
phantom.exit();
}
}, 3000);
}, 8000);
}, 8000 );
}); //
我有问题。(请注意,在我的代码中,变量“webpage”替换为“page”)
我的输出:
Writing /Users/jMac-NEW/Documents/FILEMAKER OCLC/login_test15_brkpoint6.png...
[6] top = 1080
Writing /Users/jMac-NEW/Documents/FILEMAKER OCLC/login_test15_brkpoint7.png...
[7] top = 1080
Writing /Users/jMac-NEW/Documents/FILEMAKER OCLC/login_test15_brkpoint8.png...
[8] top = 1080
我只能在我的目录中找到/Users/jMac NEW/Documents/FILEMAKER OCLC/login_test15_brkpoint6.png
为什么,我如何解决这个问题?您的代码版本不完整,请更新问题。按要求完成