【发布时间】:2020-11-30 14:29:50
【问题描述】:
我创建了一个抓取工具,可以从网站读取一些信息。
这就是我正在阅读的 html:
<div class="event-meta">
<div class="event-meta-block animate-onscroll">
<i class="icons icon-calendar"></i>
<p class="title">Start Date - End Date</p>
<p>
02/12/2020
</p>
</div>
<div class="event-meta-block animate-onscroll">
<i class="icons icon-clock"></i>
<p class="title">Start Time - End Time</p>
<p>
17:30
</p>
</div>
<div class="event-meta-block animate-onscroll">
<i class="icons icon-location"></i>
<p class="title">Event Location</p>
<p><a href="http://maps.google.com/?q=41.861483031307,2.6636006533772">Biblioteca Joan Vinyoli</a></p>
</div>
<div class="event-meta-block animate-onscroll">
<i class="icons icon-ticket"></i>
<p class="title">Cost</p>
<p>Gratuït</p>
</div>
<div class="event-meta-block animate-onscroll">
<i class="icons icon-globe"></i>
<p class="title">Website</p>
<p>
<a style="word-wrap: break-word;" target="_blank" href="https://www.culturascf.cat/ca/programacio/c/2006-sessio-virtual-maite-carranza--trobada-dels-c.html">https://www.culturascf.cat/ca/programacio/c/2006-sessio-virtual-maite-carranza--trobada-dels-c.html</a>
</p>
</div>
<div class="event-meta-block animate-onscroll">
<i class="icons icon-share"></i>
<p class="title">Share This</p>
</div>
</div>
我想获取活动地点。在那种情况下,我试图获得Biblioteca Joan Vinyoli。我将该数据存储在名为: location:
location: $('.event-meta').find('.event-meta-block').eq(2).find(':not(.title)').text().trim(),
复制此信息和位置存储信息如下:Biblioteca Joan VinyoliBiblioteca Joan Vinyoli
这就是获取信息的函数:
async function fetchEvent(url) {
return axios
.get(url)
.then((response) => {
const $ = cheerio.load(response.data);
const dataText = $('.event-meta').find('.event-meta-block').eq(0).find(':not(.title)').text().trim().replace(/\s/g, "");
let dataInici, dataFinal;
if(dataText.indexOf('-') >= 0) {
dataInici = moment(dataText.split('-')[0], 'DD/MM/YYYY').toDate();
dataFinal = moment(dataText.split('-')[1], 'DD/MM/YYYY').toDate();
}
else {
dataFinal = moment(dataText, 'DD/MM/YYYY').toDate();
dataInici = moment(dataText, 'DD/MM/YYYY').toDate();
}
return {
idEvent: $('link[rel="shortlink"]').attr('href').trim(),
link: url,
title: $('#content .col-lg-12 h1').text(),
content: $('#content .p-tb .event-single .col-lg-9').html(),
endDate: dataFinal,
startDate: dataInici,
hora: $('.event-meta').find('.event-meta-block').eq(1).find(':not(.title)').text().trim().replace(/\s\s+/g, ' '),
location: $('.event-meta').find('.event-meta-block').eq(2).find(':not(.title)').text().trim(),
locationUrl: $('.event-meta').find('.event-meta-block').eq(2).find('a').attr("href"),
preu: $('.event-meta').find('.event-meta-block').eq(3).find(':not(.title)').text().trim(),
web: $('.event-meta').find('.event-meta-block').eq(4).find(':not(.title)').text().trim(),
}
})
.catch((error) => {
return null;
});
}
我不明白为什么要复制信息并存储Biblioteca Joan VinyoliBiblioteca Joan Vinyoli。
【问题讨论】:
标签: javascript html jquery cheerio