Node.js + request + cheerio 爬取数据出现问题
发布于 9 年前 作者 LNoe-lzy 3665 次浏览 最后一次编辑是 8 年前 来自 问答

我在用node爬取数据,用了request模块和cheerio模块,我在获取到了一个url后,用数组获取到了该url下的分页(假设为1-10),但是当打印数据后,发现只获取到了分页1下的数据

代码如下:

for (var i = data.start; i <= data.end; i++) { var newUrl; if ( i == 1 ) { newUrl = data.url; } else { newUrl = data.url + ‘#!hot-p’ + i; } urlList.push(newUrl); } async.eachSeries(urlList, function(elem, callback){ //requestUrl(elem, data.tag, callback); request(elem, function(err, res){ var $ = cheerio.load(res.body.toString()); var j = $(’.j’); var a = j.find(’.a’).toArray(); var hrefArray = []; for (var i=0;i< a.length;i++){ var that = $(a[i]); var aHref = that.attr(‘href’); var urls = ‘http://www.duitang.com’ + aHref; hrefArray.push(urls); } console.log(hrefArray); callback(); }); }, function(err){ if (err) { console.log(err); }else{ console.log(‘已完成全部抓取!’); } callback(); }); console.log(hrefArray); 打印出来的数据全是分页1下的数据,请问这是为什么?

1 回复

#之后的内容是由浏览器处理的,根据标准是不会被传到服务器上,即使传过去,理论上也会被服务器忽略。 使用 hash 进行分页一般是通过 ajax 请求分页数据,你应该用 developer toolbar 之类的工具,看下 ajax 的 url ,用那条 url 去请求分页数据。

回到顶部