我有一个javascript变量包含了一个页面的HTML源代码(不是当前页面的源代码),我需要从这个变量中提取所有链接。有什么线索,什么是最好的方法来做到这一点?是否可以为变量中的HTML创建一个DOM,然后遍历它?
o7jaxewo1#
我不知道这是不是推荐的方法,但它确实有效:(仅限JavaScript)
var rawHTML = '<html><body><a href="foo">bar</a><a href="narf">zort</a></body></html>'; var doc = document.createElement("html"); doc.innerHTML = rawHTML; var links = doc.getElementsByTagName("a") var urls = []; for (var i=0; i<links.length; i++) { urls.push(links[i].getAttribute("href")); } alert(urls)
mzsu5hc02#
如果您使用jQuery,我相信您可以非常容易地:
var doc = $(rawHTML); var links = $('a', doc);
http://docs.jquery.com/Core/jQuery#htmlownerDocument
gc0ot86w3#
这是有用的esepcially如果你需要替换链接...
var linkReg = /(<[Aa]\s(.*)<\/[Aa]>)/g; var linksInText = text.match(linkReg);
uurv41yg4#
如果你运行的是Firefox,你可以!它叫做DOMParser,看看吧:
DOMParser is mainly useful for applications and extensions based on Mozilla platform. While it's available to web pages, it's not part of any standard and level of support in other browsers is unknown.
1l5u6lss5#
如果您在浏览器上下文之外运行,并且不想拉取HTML解析器依赖项,这里有一个简单的方法:
var html = ` <html><body> <a href="https://example.com">Example</a> <p>text</p> <a download href='./doc.pdf'>Download</a> </body></html>` var anchors = /<a\s[^>]*?href=(["']?)([^\s]+?)\1[^>]*?>/ig; var links = []; html.replace(anchors, function (_anchor, _quote, url) { links.push(url); }); console.log(links);
5条答案
按热度按时间o7jaxewo1#
我不知道这是不是推荐的方法,但它确实有效:(仅限JavaScript)
mzsu5hc02#
如果您使用jQuery,我相信您可以非常容易地:
http://docs.jquery.com/Core/jQuery#htmlownerDocument
gc0ot86w3#
这是有用的esepcially如果你需要替换链接...
uurv41yg4#
如果你运行的是Firefox,你可以!它叫做DOMParser,看看吧:
1l5u6lss5#
如果您在浏览器上下文之外运行,并且不想拉取HTML解析器依赖项,这里有一个简单的方法: