我想开发一个工具,它可以做两件事:
设置以下web窗体上的语言和日期:http://ibreviary.com/m2/opzioni.php,然后
在同一网站上下载不同页面的文本,但保留这些设置。例如,http://ibreviary.com/m2/breviario.php?s=lodi。
该工具应该模仿用户正常浏览这些页面时所做的操作:设置所需的语言和日期,然后查看动态创建的结果页面。你知道吗
我以为节点.js对这项工作来说是个好工具。虽然我能够让它发布表单数据(我想),然后下载所需的页面,但我无法让服务器“记住”设置(就像在真正的web浏览器会话中发生的那样)。下载的文本始终是默认文本(今天的日期)。你知道吗
以下是我目前掌握的Javascript代码:
var FormData = require('form-data');
var request = require('request');
var http = require('http');
var fs = require('fs');
var formData = {
lang: 'en',
giorno: 15,
mese: 11,
anno: 2014
};
request.post({url:'http://www.ibreviary.com/m/opzioni.php',
formData: formData},
function optionalCallback(err, httpResponse, body) {
if (err) {
return console.error('upload failed:', err);
}
console.log('Upload successful! Server responded with:', body);
download(url, destination, function(){
console.log("Done saving file '" + destination +
"' downloaded from '" + url + "'");
});
});
var url = "http://www.ibreviary.com/m/breviario.php?s=lodi";
var destination = "file.html";
var download = function(url, destination, callback) {
var file = fs.createWriteStream(destination);
var request = http.get(url, function(response) {
response.pipe(file);
file.on('finish', function() {
file.close(callback); // close() is async, call callback
// after close completes.
});
}).on('error', function(err) { // Handle errors
fs.unlink(destination); // Delete the file async.
if (callback) callback(err.message);
});
};
如果您尝试一下,您将看到第一个request.post
的输出是未更改的网页:就好像表单的发布不起作用一样。你知道吗
有什么想法吗?你知道吗
最后,我使用了Python的^{} package 来做我想做的事情。你知道吗
以下是对我有效的最起码的工作示例:
相关问题 更多 >
编程相关推荐