基本上,当我在 Yandex 中进行搜索时,我会得到如下信息:
.
但是,当我右键单击并复制链接时,我没有得到真正的链接,而是垃圾链接(在重定向到我想要的链接之前,它具有跟踪我的点击功能的中间功能)。
我正在尝试编写一个删除那些垃圾链接的脚本。这是我尝试过的:
function decodeURL(str) {
return decodeURIComponent((str+'').replace(/\+/g, '%20'));
}
function getRealLinks() {
var classes = document.getElementsByClassName('organic typo typo_text_m typo_line_s'); // gets any search result
var cleanLinks = new Array(); // we'll store any clean link to this array
for (i = 0; i < classes.length; i++) {
var html = classes[i].innerHTML; // we get part of the inner html of the selected search result
var pattern = /(url=(.*?))(?=&\w+=)/; // with this regex we'll match the url
var match = pattern.exec(html); // attempt matching pattern
cleanLinks.push(decodeURL(match[2])); // decode the url, then push the match to the array
}
console.log(cleanLinks);
}
function bindEventListeners() {
var lis = document.getElementsByTagName('li'); // search results have `li` selector
for (var i = 0; i < lis.length; i++) { // iterate every element
(function(i) {
lis[i].addEventListener('click', function() { // add a listener to the current element
alert(this.dataset.cid); // each result has an id (by default between 0-9)
}, false);
})(i);
}
}
bindEventListeners();
getRealLinks()
给了我正确的链接,但我现在不知道如何“进步”以用href
干净的链接替换搜索结果的 s 。
bindEventListeners()
正如它所说,绑定将在搜索结果正文部分实现点击时触发的侦听器。获取点击的搜索结果对我很有用id
,只是为了让链接偏离我需要的链接。例如,用户点击带有 index 的搜索结果3
,我会这样做var search_3 = getRealLinks()[3]
。
如何用 JavaScript 中的干净链接替换您可以看到的那些链接?