CNode

Node.js + request + cheerio 爬取数据出现问题

问答
LLNoe-lzy发布于10 年前最后回复10 年前1 回复4083 浏览0 收藏

我在用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)

K
klesh#1·10 年前

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

参与回复
登录后即可参与回复。登录