【问题标题】:Scrape website/domain and check of URLs exist of a certain format - JavaScript抓取网站/域并检查是否存在某种格式的 URL - JavaScript
【发布时间】:2020-02-06 12:19:07
【问题描述】:

我想编写一些 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); 
}

谢谢。

【问题讨论】:

    标签: javascript url dns


    【解决方案1】:

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

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

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

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

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

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

    【讨论】:

    • 嘿@fabiano Taioli - 谢谢你的回答。我会检查一下!我实际上想用 Vanilla JS 来做这件事,因为我想构建 chrome 扩展。我假设在使用 Node 编译/构建之后,我仍然能够构建 chrome 扩展?在节点上运行是使用 javascript 废弃网站的唯一方法吗?
    • 我认为你可以在 chrome 扩展中做到这一点,但你必须请求所需的权限read here
    猜你喜欢
    • 1970-01-01
    • 2021-02-02
    • 1970-01-01
    • 2016-06-07
    • 2013-02-05
    • 2013-05-22
    • 2020-06-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多