《使用 superagent 与 cheerio 完成简单爬虫》 挑战问题
我发现用useravatar找到作者的信息。但是请问如何将这个数据插入的到二位数组中的一项中?
$('#topic_list .user_avatar').each(function (idx, element) {
var $element = $(element);
items[idx].push({
author: $element.attr('title'),
});
});
请问除了搜索Class,可以搜索img里面的信息吗?
<a class="user_avatar pull-left" href="/user/huanglong">
<img src="https://avatars.githubusercontent.com/u/670360?v=3&s=120"
title="huanglong"
3 回复
就像使用jQuery一样呗
$('img[title="ArronYR"]')
发一下我的代码,刚刚写好
/// <reference path="../typings/express/express.d.ts"/>
/// <reference path="../typings/node/node.d.ts"/>
"use strict";
var express = require('express');
var superAgent = require('superagent');
var cheerio = require('cheerio');
var app = express();
app.get('/', function (req, res) {
var url = 'https://cnodejs.org';
var items = [];
superAgent
.get(url)
.set({
Referer: url,
'User-Agent': "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:39.0) Gecko/20100101 Firefox/39.0"
})
.end(function (err, response) {
if (err) {
console.log(err.status);
return false;
}
// 如果真的出错了,那么response将会是undefined,这时候访问status属性会出错,所以还是
// 得有上面代码的错误检查
if (response.status === 200) {
var $ = cheerio.load(response.text);
}
$('#topic_list .cell').each(function (index, item) {
var $item = $(item);
// 每一篇文章的url
var itemURL = url + $item.find('.topic_title').attr('href');
var author = $item.find('.user_avatar > img').attr('title');
var title = $item.find('.topic_title').attr('title');
items.push({
title: title,
href: itemURL,
author: author
});
});
if (items) {
res.send(items);
}
});
});
app.listen(3000);
///# sourceMappingURL=app.js.map