运行 关于使用 cheeriojs 进行抓取的问题
Running into an issue with scraping using cheeriojs
我正在尝试从网站上抓取文章 link,但 运行 遇到了一个问题,其中只有一个 link 被抓取,其他元素没有循环.我将 nodejs 与 cheerio 和 request 包一起使用。
request('http://www.nj.com/politics', function(error, response, html) {
var $ = cheerio.load(html);
var results = [];
$('#river-container ul').each(function(i, element) {
var articleLink = $(element).find('li.river-item.has-photo').find('div.item-text').find('h2.h2.fullheadline').find('a').attr('href');
results.push({ link: articleLink });
});
res.send(results);
});
您显示的 HTML 只有一个元素与选择器 #river-container ul
匹配,因此您的 .each()
在循环中只有一次迭代。如果您想迭代 <ul>
下的所有 <li>
条目,则将外循环更改为:
$('#river-container ul li').each(...)
然后修改内部 .find()
语句以适应您已经匹配 <li>
.
的事实
或者,将顶部选择器更改为您真正想要的:
request('http://www.nj.com/politics', function(error, response, html) {
var $ = cheerio.load(html);
var results = [];
$('#river-container ul li.river-item.has-photo div.item-text h2.h2.fullheadline a').each(function(i, element) {
var articleLink = $(element).attr('href');
results.push({ link: articleLink });
});
res.send(results);
});
我正在尝试从网站上抓取文章 link,但 运行 遇到了一个问题,其中只有一个 link 被抓取,其他元素没有循环.我将 nodejs 与 cheerio 和 request 包一起使用。
request('http://www.nj.com/politics', function(error, response, html) {
var $ = cheerio.load(html);
var results = [];
$('#river-container ul').each(function(i, element) {
var articleLink = $(element).find('li.river-item.has-photo').find('div.item-text').find('h2.h2.fullheadline').find('a').attr('href');
results.push({ link: articleLink });
});
res.send(results);
});
您显示的 HTML 只有一个元素与选择器 #river-container ul
匹配,因此您的 .each()
在循环中只有一次迭代。如果您想迭代 <ul>
下的所有 <li>
条目,则将外循环更改为:
$('#river-container ul li').each(...)
然后修改内部 .find()
语句以适应您已经匹配 <li>
.
或者,将顶部选择器更改为您真正想要的:
request('http://www.nj.com/politics', function(error, response, html) {
var $ = cheerio.load(html);
var results = [];
$('#river-container ul li.river-item.has-photo div.item-text h2.h2.fullheadline a').each(function(i, element) {
var articleLink = $(element).attr('href');
results.push({ link: articleLink });
});
res.send(results);
});