首页 > 解决方案 > 抓取网站/域并检查是否存在某种格式的 URL - JavaScript

问题描述

我想编写一些 JavaScript 来检查一个域是否包含一组特定的 URL。

例如:

  1. 检查http://www.mywebsite.com/
  2. 包括以http://www.mywebsite.com/123开头的 URL

是否可以在 JavaScript 中做到这一点?

我写过类似的东西,可以在给定页面上找到 URL。但实际上,我想检查整个域......

let offerLinks = document.querySelectorAll('a[href*="mywebsite.com/offers"]');

for (let index = 0; index < offerLinks.length; index++) {
   const element = offerLinks[index];
   console.log("These are all the looped offer links - " + element); 
}

谢谢你。

标签: javascripturldns

解决方案


我假设您正在编写一个 node.js 应用程序。(由于同一站点的安全限制,如果是浏览器脚本,您要执行的检查将被锁定到仅托管的网站)。

假设您正在编写一个 Node 应用程序,您想要执行的操作称为“抓取”(一个非常简单的抓取版本)。有许多 Node 库可以为您提供帮助。其中之一是Cheerio

首先将 url 内容加载到字符串中,您可以为此答案复制代码。

其次用cheerio解析字符串并根据需要提取链接,例如:

const cheerio = require('cheerio')
const $ = cheerio.load(webPageLoadedContent)
$('a').filter(function(i, el) {
  return $(this).attr('href').includes('mywebsite.com/offers')
})

这是单个网页的过程。要扩展到整个网站,您必须将其递归地应用于您找到的每个 url(根据站点名称进行过滤)。


推荐阅读