来自控制台的纯JavaScript:从页面中提取链接,模拟点击到另一个页面并执行相同操作

时间:2016-11-10 10:09:06

标签: javascript html ajax web

  1. 我很好奇是否可以使用纯(香草)javascript代码输入浏览器控制台,提取所有链接(第一页),然后模拟点击转到另一个页面,在那里提取链接并转到第三页。 提取链接意味着将它们写入控制台。

  2. 与1相同的问题,但转到另一个页面的链接只是一个更新页面部分的ajax调用,实际上并没有转到另一个页面。

  3. P.S。所有链接都属于一个域。

    任何想法如何基于纯javascript来完成?

    例如,如果您访问Google并输入一些字词("示例"),则可以打开控制台并输入

    var array = [];
    var links = document.getElementsByTagName("cite");
    for(var i=0; i<links.length; i++) {
        array.push(links[i].innerHTML);
    };
    console.log(array);
    

    显示网址​​数组(包含一些文字,但没关系)。

    可以使用纯javascript自动从第1页到第3页重复3次?

    P.S。我实际上应该在上面的代码中提取标签,所以标签我命名为&#34;链接&#34;。很抱歉混淆(这不会改变问题)。

    再次感谢你。

1 个答案:

答案 0 :(得分:2)

如果要将所有链接写入控制台,可以使用更具体的命令

FOR GOOGLES

// Firstly, you get all the titles
var allTitles = document.getElementById("ires").getElementsByTagName("h3");
for(var getTitle of allTitles ) { // For each title, we get the link.
    console.log(getTitle.getElementsByTagName("a")[0].href) 
}

然后,您只需要模拟导航的点击。

var navLinks = document.getElementById("nav").getElementsByTagName("a");
navLinks [navLinks.length-1].click() // Click on the "Next" button.

FOR ALL SITES

如果您想获取所有链接,只需执行相同的命令,获取您想要的div ID,只需要页面的某些部分,然后使用getElementsByTagName("a")

您可以了解如何使用XHR或其他来制作原始AJAX请求

在Google上找到的简单示例:

// jQuery
$.get('//example.com', function (data) {
  // code
})

// Vanilla
var httpRequest = new XMLHttpRequest()
httpRequest.onreadystatechange = function (data) {
  // code
}
httpRequest.open('GET', url)
httpRequest.send()