我正在NodeJs中构建一个网络爬虫。基本上,该程序会自动执行链接的“单击”(获取该href的HTML),然后从这些页面收集某些数据。
问题是,与浏览器中的元素不同,我收到的href字符串似乎是“编写时”。例如,/ products / 34当然会在浏览器中显示为https://www.example.com/products/34,但是当由Cheerio收集时,href仍然是/ products / 34。
我正在使用element.attribs.href或$(element).attr('href')来获取href。我收到一个相对URL的事实迫使我执行诸如将基本URL附加到每个链接的操作。同样,这也会产生问题,因为不同的站点可以用不同的方式编写其href。
问题:有什么办法获取完整的URL?我正在使用axios获取某个页面的HTML字符串,然后以这种方式收集锚元素:
const $ = cheerio.load(html);
const scrapedLinks = $('a');
const refs = [];
scrapedLinks.each((index, link) => {
refs.push(link.attribs.href)
})