我需要提取日期和文章的完整网址。
const cheerio = require('cheerio');
const request = require('request');
const resolveRelative = require('resolve-relative-url');
request('https://www.moneyweb.co.za/', function (error, response, html) {
if (!error && response.statusCode == 200) {
const $ = cheerio.load(html);
$('.border0010-dotted').each(function (i, element) {
const title = $(this).find('.title').text().trim()
const url = resolveRelative($(this).find('.a href').text().trim(), response.request.uri.href)
const date = $(this).attr('.inline-block')
const description = $(this).find('.excerpt').text().trim()
const feedItem = {
title: title,
description: description,
url: url,
date: date
}
console.log(feedItem)
})
}
});
输出如下所示:
{ title: 'Hiring a new bank CEO rarely improves the share price',
description: 'New CEOs have done little to boost Europe bank stocks.',
url: 'https://www.moneyweb.co.za/',
date: undefined }
我怎样才能得到日期和完整的网址?
1条答案
按热度按时间goqiplq21#
几个问题:
const date = $(this).attr('.inline-block')
应该是find()
而不是attr()
。一些容器具有alternate日期位置,但$(this).find(".meta .inline-block:last").prev().text();
似乎能够获取所有这些位置。.border0010-dotted
出现在文章的底部,数据较少,因此我建议使用#home-panel-loop .border0010-dotted
将选择器细化到主要内容。href
属性从.title a
元素中提取。.a href
在class="a"
元素中查找<href>
标记。