Open CommanderXL opened 9 years ago
具体原因不知。但是这个定位定得太烂了,$$("div.changes").find("span:nth-child(2) a")
,尝试换一个比较有逻辑的语法来定位吧。
2015-05-08 12:18 GMT+08:00 XRene notifications@github.com:
除了抓取title和href属性后抓取author时只能抓取一部分的author. 没整明白是什么原因。
app.get("/",function(req,res,next){ superagent.get("https://cnodejs.org/") .end(function(err,sres){ //常规的错误请求 if(err){ console.log(err.message); return res.redirect("/"); } var $=cheerio.load(sres.text); var item=[]; $("#topic_list .topic_title").each(function(idx,element){ var $element=$(element); var href=$element.attr("href");
item.push({ title:$element.attr("title"), href:$element.attr("href") }); superagent.get("https://cnodejs.org"+href).end(function(err,ssres){ var $$=cheerio.load(ssres.text); item[idx].author=$$("div.changes").find("span:nth-child(2) a").text(); console.log(item[idx]); //这里打印出来的所有数据,一部分有author,一部分没有 }) }) res.send(item); })
});
— Reply to this email directly or view it on GitHub https://github.com/alsotang/node-lessons/issues/35.
@alsotang 我按照楼上类似的思路写的之后那几个得不到author的页面是返回503的。。。这是为啥呢?我用Chrome打开没有这个问题阿。。。能不能简要说一下挑战部分是怎样完成的?谢谢
是应该按照lesson4里那样写吗?
控制一下爬虫的速率
2015-10-01 15:52 GMT+08:00 SCaffrey notifications@github.com:
是应该按照lesson4里那样写吗?
— Reply to this email directly or view it on GitHub https://github.com/alsotang/node-lessons/issues/35#issuecomment-144647052 .
应该如何控制呢?通过计数器来模拟sleep?
今天公司里闲来没事边看边学,做到lesson3,自己看着cheerioAPI写了一下,大神指点一下,感觉很乱
app.get('/', function (req, res, next) {
superagent.get('https://cnodejs.org/')
.end(function (err, sres) {
if (err) {
return next(err);
}
var $ = cheerio.load(sres.text);
var items = [];
$('#topic_list .topic_title').each(function (idx, element) {
var $element = $(element);
items.push({
title: $element.attr('title'),
href: $element.attr('href'),
author: $element.parents('.cell').find('img').attr('title')
});
});
res.send(items);
});
});
:+1:
大体上没错啊,剩下的微调一下就好了
2015-11-25 13:35 GMT+08:00 SCaffrey notifications@github.com:
[image: :+1:]
— Reply to this email directly or view it on GitHub https://github.com/alsotang/node-lessons/issues/35#issuecomment-159496421 .
结果没有问题,感觉代码丑的一逼。
追求@alsotang 的代码极致elegant体验哈哈。
丑的一逼,也不算丑,主要我写代码好看。
@alsotang 桑搞笑也一流啊!
请问nodejs如何控制爬虫速率啊?如果模仿sleep的话会让整个进程都堵塞,得不偿失啊,求指点,3Q
用 settimeout 模拟 sleep 不会阻塞啊
2016-06-12 16:50 GMT+08:00 YuqiangZhang notifications@github.com:
请问nodejs如何控制爬虫速率啊?如果模仿sleep的话会让整个进程都堵塞,得不偿失啊,求指点,3Q
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/alsotang/node-lessons/issues/35#issuecomment-225417714, or mute the thread https://github.com/notifications/unsubscribe/ABGB7-V5khzMhDwk5RLLbkrliEfe9VPfks5qK8hXgaJpZM4ETTDl .
换了一个思路,从每行找起
app.get('/', function (req, res, next) {
superagent.get('https://cnodejs.org/')
.end(function (err, sres) {
if (err) {
return next(err);
}
var $ = cheerio.load(sres.text);
var items = [];
$('.cell').each(function (idx, el) {
var $el = $(el);
items.push({
title: $el.find('.topic_title').attr('title'),
href: $el.find('.topic_title').attr('href'),
author:$el.find('img').attr('title')
});
});
res.send(items);
});
});
app.get('/',function(req,res,next){ superagent.get('https://cnodejs.org/') .end(function(err,sres){ if(err){ return next(err); } var $=cheerio.load(sres.text); var items=[]; $('#topic_list .topic_title').each(function(idx,element){ var $element1=$(element); items.push({ title:$element1.attr('title'), href:$element1.attr('href') }) }) $('#topic_list .user_avatar img').each(function(idx,element){ var $element2=$(element); items[idx].author=$element2.attr('title'); }) res.send(items); }) })
除了抓取title和href属性后抓取author时只能抓取一部分的author. 没整明白是什么原因。