zoukankan      html  css  js  c++  java
  • 爬虫任务的多窗口切换

    首先说一下Google浏览器网页检查里的元素邮件有一个copy--->XPath选项,之前一直不知道这个东西是用来干嘛的,直到今日因为一个日常任务被我逮着了;

    它可用于爬虫里的一个方法进行元素定位获取到该元素:

    // /html/body/div/div/div[1]/div[1]
    // /html/body/div/div/div[1]/div[2]
    driver.findElement(By.xpath("/html/body/div/div/div..")).click();    //这里的参数即是copy到的XPath值,定位到元素可进行点击等相关操作

    还有就是多窗口切换了,见代码:

    注:上面的点击方法打开了新窗口,此时有两个窗口,需要进行切换和关闭操作

    // 获取当前页面句柄
    String handle = driver.getWindowHandle();

    // 获取所有页面的句柄,并循环判断不是当前的句柄,就做选取switchTo()
    for (String handles : driver.getWindowHandles()) {
    if (handles.equals(handle))
      continue;
      driver.switchTo().window(handles);  //切换到当前的第二个需要爬取的页面
    }

    //TODO ...进行逻辑操作

    driver.close();
    driver.switchTo().window(handle);  

    //End(以上所有循环点击爬取点击得来的第二窗口数据)

    附:

    一个小问题:以前的selenium下拉到底部调用js失效了,后面用了另一种方法:

    ((FirefoxDriver) driver).executeScript("document.querySelectorAll('div')[document.querySelectorAll('div').length-1].scrollIntoView()");

    不知道是不是爬取的网页平台做了什么处理,原来的方法代码不起作用:

    // ((FirefoxDriver) driver).executeScript("window.scrollBy(0," + i * 20000 + ")");

  • 相关阅读:
    跃迁方法论 Continuous practice
    EPI online zoom session 面试算法基础知识直播分享
    台州 OJ 2648 小希的迷宫
    洛谷 P1074 靶形数独
    洛谷 P1433 DP 状态压缩
    台州 OJ FatMouse and Cheese 深搜 记忆化搜索
    台州 OJ 2676 Tree of Tree 树状 DP
    台州 OJ 2537 Charlie's Change 多重背包 二进制优化 路径记录
    台州 OJ 2378 Tug of War
    台州 OJ 2850 Key Task BFS
  • 原文地址:https://www.cnblogs.com/yzf666/p/7419160.html
Copyright © 2011-2022 走看看