由NodeJS制作的爬行动物的全过程(续)

由NodeJS制作的爬行动物的全过程(续)
到本书结束时,我们需要修改程序连续获得40页的内容,也就是说,我们需要输出每篇文章的标题、链接、第一条评论、对用户的评论和论坛的要点。

如图所示,$('。reply_author)。情商(0)。文本()。修剪();得到的值是正确的第一个评论的用户。

{ }
eventproxy得到评论和用户名的内容后,我们需要对用户界面和继续捕捉用户的积分。

复制代码代码如下所示:

var $ = cheerio.load(topichtml);

这是URL目标

无功userhref = 'https: / / cnodejs。org+ $('。reply_author)。情商(0),Attr('href);

userhref = url.resolve(特尔,userhref);

var title= $('。topic_full_title)。文本()。修剪()代替( / 。;

VaR href = topicurl;

无功comment1 = $('。reply_content)。情商(0)。文本()饰();

作者1 = $(var。reply_author)。情商(0)。文本()饰();

参数传递给下一个并发抓取

Ep.emit('user_html,{ userhref,标题,链接,comment1,作者1 });
在eventproxy这个时间,我们要找出得分(class=大)。

{ }
发现是很好,我们想得到的结果。

复制代码代码如下所示:

VaR结果= superagent.get(userurl)

结束(函数错误,RES){

如果(错误){

返回console.error(ERR);

}

var $ = cheerio.load(res.text);

var得分= $(大);

console.log(用户{ 1 });

console.log(用户{ 2 });

Console.log (user{3});

console.log(用户{ 4 });

console.log($('大')。文本()。修剪()));

返回({

标题:用户{ 1 },

链接:用户{ 2 },

comment1:用户{ 3 },

作者1:用户{ 4 },

1:得分

});

});

});
运行程序,这个代码的结果。

{ }
但问题是,我们能输出正确的结果的。端()的回调函数,但不正确的输出结果,仔细一看,需要输出的结果是一个请求的对象。这是因为粗心,错误的。端()函数不及格返回值为请求对象,需要将结果返回给上层(用户)。

复制代码代码如下所示:

/ /找到userdetails

Ep.after('user_html ',topicurls.length,功能(用户){)

用户users.map(功能(用户){

无功userurl =用户{ 0 };

风险评分;

superagent.get(userurl)

结束(函数(错误,RES){

如果(错误){

返回console.error(ERR);

}

/ / console.log(res.text);

var $ = cheerio.load(res.text);

得分= $(大);

});

返回({

标题:用户{ 1 },

链接:用户{ 2 },

comment1:用户{ 3 },

作者1:用户{ 4 },

1:得分

});

});
给用户一个良好的输出和发现的1休息是正确的值。精心调试表明,程序是console.log()首先,然后。地图()。在更准确。地图()函数,回调函数,得到()不执行赋值评分,和返回的返回值进行。这是回调函数的不同步,且外层同步不等待做回调函数。

{ }
我的做法是eventproxy发出消息,然后将所需的数据接收的消息的操作后()的消息。只有在接收到消息时,才能打印传递的参数(结果)。

复制代码代码如下所示:

分数= $(大)文本();

添加

Ep.emit('t_score { 1 },{用户,用户用户{ 2 },{ 3 },用户{ 4 },得分});

的…

Ep.after('t_score ',10、功能(用户){

console.log(用户);

});
{ }
问题是解决了,但算总账的价值似乎太大了。再次,原来有两类=‘大',而用户的主题集合属于这一类。我们把第一个元素通过再见s.slice(开始,{结束}),和比分改为得分=('大')。片(0)。情商(0)。文本()。修剪();正确的结果如下。

{ }

免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部