• 爬虫任务的多窗口切换


    首先说一下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 + ")");

  • 相关阅读:
    30天养成一个好习惯
    ym——安卓巴士总结了近百个Android优秀开源项
    内存泄漏以及常见的解决方法
    Android学习笔记(四十):Preference的使用
    Android中View绘制流程以及invalidate()等相关方法分析
    NumberFormat 类
    开发人员福利!ChromeSnifferPlus 插件正式登陆 Chrome Web Store
    memset函数具体说明
    分分钟教会你使用HTML写Web页面
    UVA 465 (13.08.02)
  • 原文地址:https://www.cnblogs.com/yzf666/p/7419160.html
Copyright © 2020-2023  润新知