首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用JavaScript获取网站中的所有URL?

问如何使用JavaScript获取网站中的所有URL?
EN

Stack Overflow用户
提问于 2010-09-30 01:22:41
回答 4查看 23K关注 0票数 7

有谁知道使用JavaScript获取网站中所有URL的方法吗?

我只需要从相同的域名开始的链接,name.no需要考虑其他链接。

EN

回答 4

Stack Overflow用户

发布于 2010-09-30 01:31:42

这将在页面上获得所有相同主机的链接

代码语言:javascript
复制
var urls = [];
for(var i = document.links.length; i --> 0;)
    if(document.links[i].hostname === location.hostname)
        urls.push(document.links[i].href);

如果你所说的站点意味着你想要递归地获取链接页面中的链接,那就有点棘手了。您必须将每个链接下载到一个新文档中(例如,在<iframe>中),然后onload会检查iframe自己的文档,以获取更多要添加到列表中的链接。您需要保持对已经爬行的URL的查找,以避免两次获取相同的文档。它可能不会很快。

票数 19
EN

Stack Overflow用户

发布于 2019-05-17 23:15:00

或在es6中

代码语言:javascript
复制
[...document.links].map(l => l.href)
票数 7
EN

Stack Overflow用户

发布于 2019-07-24 06:46:27

要从页面提取(并显示)域、urls和链接,"for(var i= document.links.length;i --> 0;)“方法是一个很好的集合。下面是一个从html页面的特定部分提取它的示例。

您可以更改它以选择并过滤到您想要的任何内容。然后随心所欲地使用列表。我想展示一个有效的例子。

​

代码语言:javascript
复制
var re = /^((http[s]?|ftp|mailto):(?:\/\/)?)?\/?(([^\/\.]+\.)*?([^\/\.]+\.[^:\/\s\.]{1,4})?(\.[^:\/\s\.]{1,2})?(:\d+)?)($|\/)([^#?\s]+)?(.*?)?(#[\w\-]+)?$/i;
var reG = /^((http[s]?|ftp|mailto):(?:\/\/)?)?\/?(([^\/\.]+\.)*?([^\/\.]+\.[^:\/\s\.]{1,4})?(\.[^:\/\s\.]{1,2})?(:\d+)?)($|\/)([^#?\s]+)?(.*?)?(#[\w\-]+)?$/ig;
var printList = document.getElementById("domains");
var unorderedList =  document.createElement("ul");
unorderedList.setAttribute("id", "domainsList");
unorderedList.setAttribute("class", "list-group");
printList.appendChild(unorderedList);
var domainsList = document.getElementById("domainsList");


var list = document.getElementsByTagName("a");
//console.log(list);
var listArray = Array.from(list);

//loop through the list
listArray.forEach(function(link){
	//console.log(link.href);
  //console.log(typeof(link.href));

var listItem =  document.createElement("li");
listItem.setAttribute("class", "list-group-item domain"); 
domainsList.appendChild(listItem);
  var str = link.href;
  var match = str.match(reG);
  var matchGroup = str.match(re);
  //console.log(matchGroup[5]);
  var domainNode = document.createTextNode("Domain: " + matchGroup[5]);
  listItem.appendChild(domainNode);
  var breakNode  =  document.createElement("br");
  listItem.appendChild(breakNode);
  var websiteNode = document.createTextNode("Website: " + matchGroup[3]);
  listItem.appendChild(websiteNode);
  var breakNode  =  document.createElement("br");
  listItem.appendChild(breakNode);
  var fullNode = document.createTextNode("Full Link: " + match);
  listItem.appendChild(fullNode);
  domainsList.appendChild(listItem);
  unorderedList.appendChild(listItem)
});
代码语言:javascript
复制
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <meta http-equiv="X-UA-Compatible">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <title>Pull Domains form a page</title>
    <meta name="viewport" content="width=device-width, initial-scale=1">
<!-- Bootstrap CSS -->
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">

</head>
<body>

<div class="card-deck">
<div class="card mb-3" style="min-width: 10rem;"><div class="card-body"><a href="https://www.youtube.com/watch?v=f9B_1Ac5jnc">Link 1</a></div></div>
<div class="card mb-3" style="min-width: 10rem;"><div class="card-body"><a href="http://www.apple.com">Link 2</a></div></div>
<div class="card mb-3" style="min-width: 10rem;"><div class="card-body"><a href="http://www.cnn.com.au">Link 3</a></div></div>
<div class="card mb-3" style="min-width: 10rem;"><div class="card-body"><a href="http://downloads.news.com.au">Link 4</a></div></div>
<div class="card mb-3" style="min-width: 10rem;"><div class="card-body"><a href="http://ftp.android.co.nz">Link 5</a></div></div>
<div class="card mb-3" style="min-width: 10rem;"><div class="card-body"><a href="http://global.news.ca">Link 6</a></div></div>
<div class="card mb-3" style="min-width: 10rem;"><div class="card-body"><a href="https://www.apple.com">Link 7</a></div></div>
<div class="card mb-3" style="min-width: 10rem;"><div class="card-body"><a href="https://mira.mx/">Link 8</a></div></div>
<div class="card mb-3" style="min-width: 10rem;"><div class="card-body"><a href="http://www.qs.com/">Link 9</a></div></div>
<div class="card mb-3" style="min-width: 10rem;"><div class="card-body"><a href="http://pbs.org">Link 10</a></div></div>
</div>

<div id="domains"></div>

</body>
</html>

​

JSFiddle of a working copy

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3824208

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档