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

使用Cheerio+ScrapeNinja提取di-slider下图片src报错求助

解决Cheerio提取嵌套picture标签内img的src报错问题

错误原因

这个报错是因为目标HTML里的img标签src属性值格式不规范——以://开头缺少http/https协议头,Cheerio解析这种非标准HTML时触发了语法错误。

解决方案

1. 先修复HTML里的不规范src

在把HTML传给Cheerio解析前,先批量替换掉所有://开头的src值,补上https协议头:

// 假设你从ScrapeNinja拿到的原始HTML存在html变量里
const fixedHtml = html.replace(/src=":\/\/(.+?)"/g, 'src="https://$1"');
const $ = cheerio.load(fixedHtml);

2. 正确提取嵌套结构里的img的src

因为img可能嵌套在picture标签里(都属于di-slider下的元素),用层级选择器覆盖所有嵌套的img:

// 提取.di-slider下所有img标签的src(包括picture里的)
const imgSrcs = $('.di-slider img').map((index, element) => {
  return $(element).attr('src');
}).get();

console.log(imgSrcs);

3. 备选:开启Cheerio宽松解析模式

如果预处理后还是有解析问题,给Cheerio加配置允许非标准HTML:

const $ = cheerio.load(html, {
  strictMode: false, // 关闭严格解析
  lowerCaseTags: true,
  lowerCaseAttributeNames: true
});

完整示例代码

const cheerio = require('cheerio');
// 替换成你从ScrapeNinja获取的实际HTML
const html = `<!-- 包含.di-slider和嵌套picture标签的目标HTML -->`;

// 修复不规范的src属性
const fixedHtml = html.replace(/src=":\/\/(.+?)"/g, 'src="https://$1"');

// 加载HTML并提取图片链接
const $ = cheerio.load(fixedHtml);
const imgSources = $('.di-slider img').map((i, el) => $(el).attr('src')).get();

console.log('提取到的图片链接:', imgSources);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 01:12:34