【问题标题】:get all the href attributes of a web site [duplicate]获取网站的所有href属性[重复]
【发布时间】:2011-04-21 17:52:14
【问题描述】:

谁能告诉我一种使用javascript获取网站中所有href属性(链接)的方法吗?如果你能给我一个代码示例,我将不胜感激。

【问题讨论】:

标签: javascript http href hyperlink


【解决方案1】:

您可以使用document.links 获取锚点,然后循环抓取href,如下所示:

var arr = [], l = document.links;
for(var i=0; i<l.length; i++) {
  arr.push(l[i].href);
}
//arr is now an array of all the href attributes from the anchors in the page

You can test it out here,如果需要,您可以在数组上的.push() 调用之前对其进行更多过滤,但这就是抓取链接和循环的概念。

【讨论】:

  • 如何在不加载网页的情况下获取链接? (基本上我想要的是这个。用户输入一个 URL,我想在该 URL 中加载所有可用的链接。)你能告诉我实现这个的方法吗
  • 不,我没有使用任何框架作品。我希望在客户端站点中执行此操作(我认为服务器端会给服务器带来更多负担,因为我希望对该链接进行一些操作)。我只需要一种方法来做到这一点。如果它可以完成工作,我什至会准备学习一个框架。我怎样才能做到这一点?
  • @netha - 您获得的页面是在您的域上还是其他?如果它们在另一个上,由于安全限制,您别无选择,只能在服务器端进行。
  • 它们不在我的域中。如果没有其他方法,那么我想我必须在服务器端进行,对吗?你知道从服务器端有什么方法吗?
  • 我正在使用 WAMP 服务器,然后我想我在 apachi 平台中
【解决方案2】:

这是getElementsByTagName的一种方式:

var links = document.getElementsByTagName('a');

for(var i = 0; i< links.length; i++){
  alert(links[i].href);
}

【讨论】:

    【解决方案3】:

    用途:

    var anchors = document.getElementsByTagName('a');
    var hrefs = [];
    for(var i=0; i < anchors.length; i++){
      if(1/* add filtering here*/)
        hrefs.push(anchors[i].href);
    }
    

    【讨论】:

      【解决方案4】:

      一种简单的方法 一种方法是使用document.getElementsByTagName 函数。例如

      document.getElementsByTagName('a');
      

      更新

      有一个更简单的方法。请参阅@Nick Craver 的answer

      【讨论】:

      • 我反对说这是最简单的:)
      • @Nick:点了。修改为“一个简单”。 :)
      猜你喜欢
      • 2017-09-14
      • 1970-01-01
      • 2023-04-01
      • 2013-04-05
      • 2019-06-13
      • 2021-09-20
      • 1970-01-01
      • 2011-07-12
      • 1970-01-01
      相关资源
      最近更新 更多