将基于 cheerio 的搜索循环添加到节点简单爬网器中

Add cheerio-based search loop to node-simplecrawler

本文关键字:简单 节点 添加 cheerio 循环 搜索      更新时间:2023-09-26

我正在使用node-simplecrawler抓取一个网站,我需要在每个页面上的特定div中搜索某些属性值。

简单爬虫文档建议此类任务采用以下结构:

myCrawler.on("fetchcomplete",function(queueItem,data,res) {
  var continue = this.wait();
  doSomeDiscovery(data,function(foundURLs){
    foundURLs.forEach(crawler.queueURL.bind(crawler));
    continue();
  });
});

我尝试了又尝试,但无法弄清楚究竟在哪里以及如何将我的基于 Cheerio 的搜索代码插入该结构中。真的很感激这里的一些帮助。

var $ = cheerio.load(html);
$('div#jsid-post-container').each(function(i, element){
var StuffINeedToFetch = $(this).attr('data-external-id').text;
实际上没有必要

搞砸doSomeDiscovery。解决方案是直接使用响应缓冲区内容:

myCrawler.on("fetchcomplete",function(queueItem, responseBuffer){
    html = responseBuffer.toString();
    var $ = cheerio.load(html);
    $('div#jsid-post-container').each(function(i, element){
    var StuffINeedToFetch = $(this).attr('data-external-id').text;
});