You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将包含特定字符串的URL添加至数组?Node.js爬虫代码优化

嘿,这个需求其实很好实现,只需要在收集链接的环节加个简单的判断就行~

实现方法:筛选包含特定字符串的URL

你的核心需求是在抓取页面<a>标签的href属性时,只保留包含指定字符串的链接。我们可以在将链接推入数组前添加条件判断,同时还要处理href可能为空的情况,避免出现意外报错。

这里是修改后的完整可运行代码:

var request = require('request');
var cheerio = require('cheerio');
var url = "https://www.mismarcadores.com";

// 定义你要筛选的特定字符串,替换成你需要的内容就行
const targetString = "futbol";

request(url, function(err, resp, body) {
  if (err) throw err;
  var $ = cheerio.load(body);
  var addUrl= [];
  
  $('a').each(function (i, element) {
    var a = $(this);
    var href = a.attr('href');
    
    // 关键判断:先确保href存在,再检查是否包含目标字符串
    if (href && href.includes(targetString)) {
      addUrl.push(href);
    }
  });
  
  // 修正原代码的小错误:原代码里的array是笔误,应该用addUrl
  console.log(addUrl[0]);
});

关键改动说明:

  • 新增了targetString变量,用来存放你要筛选的特定字符串,你可以根据需求替换成任意内容(比如"resultados"、"basketball"等)。
  • 在推入数组前添加了if (href && href.includes(targetString))判断:
    • href先确保这个属性存在,避免处理null或undefined值导致的报错;
    • href.includes(targetString)检查当前链接是否包含你指定的字符串。
  • 修正了原代码里的笔误:最后打印的是addUrl[0]而不是array[0],原代码里没有array这个变量,会直接报错。

额外扩展(可选):

如果你需要不区分大小写的筛选(比如同时匹配"Futbol"和"futbol"),可以把判断逻辑改成这样:

if (href && href.toLowerCase().includes(targetString.toLowerCase())) {
  addUrl.push(href);
}

这样就能轻松实现只收集包含特定字符串的URL啦!

内容的提问来源于stack exchange,提问作者pepe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 07:51:42