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

Node.js爬虫中如何获取.css字符串的前置字符以提取完整路径?

解决Node.js爬虫提取完整CSS路径的问题

你的现有代码只能定位到第一个.css的位置,没法提取完整路径,也没法找出页面中所有的CSS文件。用正则表达式可以高效解决这个问题,既能匹配所有CSS路径,又能提取到从边界字符(比如", ', =, >)到.css的完整内容。

具体实现代码

替换你原来的逻辑,用全局正则遍历所有匹配结果:

// 匹配CSS路径的正则,兼容带/不带引号、各种边界字符的情况
const cssRegex = /["']?([^"'>=]+?\.css)["']?/g;
let matchResult;

// 遍历所有匹配到的CSS路径
while ((matchResult = cssRegex.exec(htmlString)) !== null) {
  // 捕获组1就是提取到的完整CSS路径(不含前后引号)
  const fullCssPath = matchResult[1];
  
  // 计算当前匹配项的行号
  const contentBeforeMatch = htmlString.substring(0, matchResult.index);
  const lineNumber = contentBeforeMatch.split('\n').length;

  // 把结果存入你的pageObj(如果要存多个,建议用数组)
  pageObj.pageUrl = url;
  if (!pageObj.searchTerm[item]) {
    pageObj.searchTerm[item] = [];
  }
  pageObj.searchTerm[item].push(`CSS路径: ${fullCssPath},行号: ${lineNumber}`);
}

// 最后把pageObj存入jsonObj
jsonObj[getPageId] = pageObj;

正则表达式说明

  • ["']?:匹配可选的单引号或双引号(HTML中引入CSS时,路径可能带引号也可能不带)
  • [^"'>=]+?:非贪婪匹配除了", ', >, =之外的所有字符,避免过度匹配到其他无关内容
  • \.css:精确匹配.css后缀
  • /g:全局模式,会找出页面中所有符合条件的CSS路径

优势对比

  1. 不再只找第一个.css,能捕获页面中所有CSS文件路径
  2. 自动处理带/不带引号的场景,提取干净的路径内容
  3. 保留了你原来需要的行号计算逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 19:42:02