博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
爬虫任务的多窗口切换
阅读量:5368 次
发布时间:2019-06-15

本文共 1019 字,大约阅读时间需要 3 分钟。

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

 

转载于:https://www.cnblogs.com/yzf666/p/7419160.html

你可能感兴趣的文章
Oracle session相关数据字典(一)
查看>>
C#用正则表达式 获取网页源代码标签的属性或值
查看>>
BZOJ 3399 [Usaco2009 Mar]Sand Castle城堡(贪心)
查看>>
WCF(一) 简单的认知
查看>>
[MFC][DShow]简单例子
查看>>
js onclick事件传参
查看>>
WiCloud 商业Wi-Fi管理平台
查看>>
团队项目--未完待续
查看>>
python中的网页标签等字符处理
查看>>
Linux常用命令(十二)
查看>>
Linux常用命令(十五)
查看>>
Linux常用命令(十四)
查看>>
Linux常用命令(十七)
查看>>
Linux常用命令(十六)
查看>>
day 3 修改haproxy.cfg 作业
查看>>
sim usim Uim 区别
查看>>
网页中插入透明Flash的方法和技巧
查看>>
动态内存申请函数选择(realloc、malloc 、alloca、 calloc)
查看>>
获取元素属性get_attribute
查看>>
Python/jquery
查看>>