我在这里使用nodejs请求模块:https://github.com/mikeal/request - 涉及到cookie但不是此代码的一部分。
请原谅未经优化的代码,我一直在尝试各种尝试修复此问题但没有成功的东西。我有这个简单的脚本:
function getPage(curpage)
{
if(curpage <= pages)
{
var newpage = curpage + 1;
console.log('getting page '+newpage );
request.get({ uri: 'http://someurl.com/test', qs: { p : newpage }}, function(error, response, body) {
if(error)
{
[...]
}
else
{
console.log(response.req.path);
}
getPage(newpage);
});
}
else
{
console.log("We're done!\n");
process.exit();
}
}
这里的问题是,我的response.req.path似乎陷入了2.我得到了:
getting page 1
/id/bradpitt5/inventoryhistory?p=1
getting page 2
/id/bradpitt5/inventoryhistory?p=2
getting page 3
/id/bradpitt5/inventoryhistory?p=2
getting page 4
/id/bradpitt5/inventoryhistory?p=2
如您所见,获取页面时正确使用“新页面”,但请求路径设置错误?我无法理解这一点。谁能弄清楚我在做错了什么?
我刚开始使用getPage(0);
我也是用不同的方法做的,只是为了确保我没有疯狂:
for( var i = 1; i <= pages; i++ ) {
urls.push( {'url' : 'http://somepage.com/test?p='+ i, 'done' : false } );
}
function getNextPage() {
for(var i = 0; i < pages; i++ ) {
if( urls[i].done == false ) {
break;
}
}
if( urls[i] && urls[i].done == false ) {
urls[i].done = true;
console.log( 'requesting: '+ urls[ i ].url );
request.get( urls[ i ].url, function(error, response, body) {
if(error) {
[...]
} else {
console.log( 'received: '+ response.req.path +' ok. ');
}
getNextPage();
}
);
} else {
console.log("we're done!");
process.exit();
}
}
这也停留在第2页。
答案 0 :(得分:0)
其含义是:
{ uri: 'http://someurl.com/test', qs: { p : newpage }}
每次调用request.get()
时都不会更新。我想知道是否值得尝试创建一个新变量:
var options = {
uri: 'http://someurl.com/test',
qs: {
p: newpage
}
};
// let's debug just to be sure
console.log( " options = %s", JSON.stringify( options, null, 2 ) );
request.get( options, function(error, response, body) {
...
我不知道是不是这种情况,但我想知道函数调用中创建的对象是否只被评估一次。
答案 1 :(得分:0)
看来我只有“2页”的数据,如果我试图高于页数,我要求的网站被重定向到最后一页。 :(