selenium设置代理ip_after_you的博客-程序员信息网

技术标签: selenium  

package com.fahai;


import java.util.List;
import java.util.Random;
import java.util.Set;
import java.util.concurrent.TimeUnit;


import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.firefox.FirefoxProfile;


public class SeleniumProxyIp {

private static String windowHandle;
public static void main(String[] args) throws InterruptedException {

//weile防止服务器封锁,这里的时间要模拟人的行为,随机且不能太短
long waitLoadBaseTime = 3000;
int waitLoadRandomTime = 3000;
Random random = new Random(System.currentTimeMillis());
//火狐浏览器
System.setProperty("webdriver.firefox.bin", "F:\\Firefox Setup 32.0.1\\firefox.exe");

//使用代理ip测试
String proxyIp = "139.59.211.210";
int proxyPort = 8080;

FirefoxProfile profile = new FirefoxProfile();
profile.setPreference("network.proxy.type", 1);
profile.setPreference("network.proxy.http", proxyIp);
profile.setPreference("network.proxy.http_port", proxyPort);
profile.setPreference("network.proxy.ssl", proxyIp);
profile.setPreference("network.proxy.ssl_port", proxyPort);

//所有协议公用一种代理配置,如果单独配置,这项设置为false
profile.setPreference("network.proxy.share_proxy_settings", true);

WebDriver driver = new FirefoxDriver(profile);
// driver.manage().timeouts().pageLoadTimeout(60, TimeUnit.SECONDS);

driver.get("http://www.yidianzixun.com/home?page=channel&keyword=%E8%8A%B1%E8%8C%B6");
//等待页面动态加载完毕
Thread.sleep(waitLoadBaseTime+random.nextInt(waitLoadRandomTime));

int pages = 1;
for(int i=1;i<2;i++){
driver.findElement(By.className("show-more")).click();

//等待页面加载完成
Thread.sleep(waitLoadBaseTime+random.nextInt(waitLoadRandomTime));
}

List<WebElement> findElements = driver.findElements(By.className("article"));

System.out.println("article的数量"+findElements.size());

WebElement webElement = findElements.get(0);

// for (WebElement webElement : findElements) {

WebDriver window;
//获取当前窗口句柄
windowHandle = driver.getWindowHandle();

WebElement link = webElement.findElement(By.tagName("h3")).findElement(By.tagName("a"));

System.out.println("link:"+link.getAttribute("href"));

//某个链接点击不到的原因
//1.未加载完成,增加等待时间
//2.被父节点隐藏,通过修改爬point(x.y)矢量积,使用链接能被模拟浏览器点击到

link.click();

//获得所有窗口的句柄
Set<String> handles = driver.getWindowHandles();

for (String string : handles) {
if (string.equals(windowHandle)) {
continue;
}else {
window = driver.switchTo().window(string);
window.manage().window().maximize();
window.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);
window.manage().timeouts().pageLoadTimeout(60, TimeUnit.SECONDS);

//获取详细页面的内容
//因为有些链接是重定向直接跳转xpath格式不匹配
//抛出异常
try {
String text = window.findElement(By.xpath("//div[@class='content-hd-media']/h2")).getText();
System.out.println(text);

} catch (Exception e) {
e. printStackTrace();
}
//关闭窗口,其实也是该窗口句柄被rush
window.close();
}
//切换到主窗口
driver.switchTo().window(windowHandle);
}

Thread.sleep(1000);

driver.close();//关闭浏览器
// }
}
}
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/after_you/article/details/69945550

智能推荐

wolframalpha最新版_WolframAlpha安卓版中文最新版_韦霄的博客-程序员信息网

WolframAlpha安卓版中文最新版是一款非常强大的计算知识的引擎,当我们在这款软件中进行问题搜索的时候,它将会直接给出答案,有的题目还会给出解答过程,这样我们就再也不用不断的点击不同的网页,寻找自己需要的答案了,所以需要这款软件的小伙伴快下载下来使用吧。WolframAlpha安卓版中文最新版软件特色1.这款软件在使用的时候是支持中文语言的输入和输出的,使用起来不会出现不习惯的问题。2.我们...

ui设计线上培训怎么样?ui设计线上与线下的区别?_暮羽鑫的博客-程序员信息网

ui设计线上培训怎么样?这是很多想学ui设计人群关心的问题,现在随着ui设计的大热,随之而来的就是各种参差不齐的培训机构,那当然在选择机构的时候也要多去比较一下再选择。我18年学习的时候,就是去听了很多机构的试听课之后才选择的一家。那接下来我们来说说ui设计线上培训怎么样吧!ui设计线上培训怎么样首先学习必须选择适合自己的,根据自己自身的情况选择,每天能有多长时间学习,课程的费用是多少,以及自己是否是一边工作,一遍学习,课程安排时间如何,课程强度会不会跟不上,还有就是培训机构的课程了解,最后先深入了解

Ubuntu18安装 ros-qtc-plugin并在qt中配置ros环境_mhrobot的博客-程序员信息网

1.安装自带 ros-qtc-plugin插件的qt creator(即不需要提前安装qt)qtcreator_ros-qtc-plugin1.1 终端启动命令:qtcreator-ros1.2启动后可以在qt中看到ros插件2.如何将已有的ros工作空间和qt联系起来一般ROS工程没有XXX.workspace文件,无法以工程形式导入。但是我们可以通过新建一个ROS工程,并以与现有工程名相同的工程来打开。第一步、打开装有ROS插件的QT creator第二部、新建ROS工程第三步、

Java应用学习(二)-Springboot整合swagger/swagger-Bootstrap-UI使用_天昱。的博客-程序员信息网_enableswaggerbootstrapui的依赖

在尚硅谷的前后端分离在线教育项目中,前后端交互使用了Swagger工具,在之后重做此项目时,我想在项目原有基础上做一些自己的改进及增强,在前后端交互工具中,我希望使用knife4j或者swagger-bootstrap-ui来代替原有的swagger,所以今天记录一下这个我未使用过的新技术。

Kettle连接MySQL报错:错误连接数据库 [mysql] : org.pentaho.di.core.exception.KettleDatabaseException的解决办法_小白掌柜的博客-程序员信息网

在Windows系统里面安装Kettle后打算连接MySQL的时候突然报错:错误连接数据库 [mysql] : org.pentaho.di.core.exception.KettleDatabaseException:Error occurred while trying to connect to the databaseDriver class ‘org.gjt.mm.mysql.Dr...

随便推点

什么是TLS1.2?——为什么我们仍然要关心它?_lavin1614的博客-程序员信息网_电脑tls1.2

互联网是有史以来最具规模的通信和数据传输技术。但随之而来也面临着一些挑战,随着我们提高计算机和其他数字设备之间共享大量信息的能力,数据信息未经授权落入他人手中的风险显著增加。为了防止网络犯罪分子通过互联网访问敏感数据,人们引入了各种加密协议,其中最著名的是安全套接字层协议()和安全传输层协议(TLS)。SSL其实已被废弃,取而代之的是TLS及它的后续版本。在2020年底停用了TLS1.0和1.1,希望确保数据安全的组织和Web主机需要在所有部署中支持TLS1.2。但什么是TLS1.2?它是怎样工作的。

vue-admin-template和vue-element-admin框架的二次开发使用发布部署接口路由权限环境搭建,前端快速入门框架_遗梦孤魂的博客-程序员信息网_element admin template

目录一、简介1、项目简介2、下载3、环境搭建二、框架三、问题1、界面开发2、路由控制3、接口请求4、权限管理四、发布一、简介1、项目简介官网:https://github.com/PanJiaChenvue-element-admin是含有丰富的组件,vue-admin-template是一个基础的单页面应用的框架,适合在vue-admi...

2022全新Java学习路线图动力节点(八)Java选学的技术有哪些?_Java_Coding1的博客-程序员信息网

八、失落之地的辉煌这里曾经繁华一片,被世人称作福光,搁在古老的东方就叫洞天福地!但现在一切都烟消云散,一场魔法灾难让此地化作焦土,沦为人间炼狱。此地长年被黑暗浓雾笼罩,即便世界被同化之后也没能改变土地的本质。如今,这里沦为过时技术的散落之地,各位召唤师可在此凭吊。额外站点:遗忘之地-暗影岛ez在班德尔隔着悠米的门扉魔典观察了一下这篇焦土,本来还想实地考察一下,目前看来还是算了吧。他看见一位典狱长提着一个小灯笼到处勾人,更听见一位黑皮肤的美人在灯笼深处的嚎叫,着实吓人!于是他请来了佐伊把暗

Java 工具类总结(2): 再也不怕表单字符串处理 - String / StringBuilder / StringBuffer_白清风的博客-程序员信息网

String / StringBuilder / StringBuffer 是 Java 中字符串类;本文从源码角度, 进行分析与总结: 1. String 常用的方法和注意点; 2. StringBuilder 和 StringBuffer 各自的特点;3. 可变类和不可变类的实现原理

win10系统安装oracle11g时遇到INS-13001环境不满足最低要求解决办法_涤生大数据的博客-程序员信息网

win10安装oracle 11g,在安装时点击setup.exe之后,出现了:[INS-13001]环境不满足最低要。解决办法很简单,这是因为版本注册问题,默认oracle 11没有添加win10的注册信息,所以要讲win10的注册信息添加到oracle的配置文件里。打开oracle安装包,找到stage文件夹,找到cvu_prereq.xml文件,用记事本打开可以看到如下内容,在&amp;lt;CER...

python bytearray拼接_python-4-bytes和bytearray_weixin_39917437的博客-程序员信息网

bytes、bytearraypython3引入了两个新类型bytes不可变字节序列可以简单认为字节组成的列表bytearray字节数组可变字节组成的序列,字符串组成序列,有什么差异?字符串以字符为单位字节是以单个字节为单位,网络传输时候,很重要bytes不可变,所以出现了bytearray这种类型字符串拼接,用‘+’效率不是很高,所以要用format,格式化字符串,format做了效率优化。所有...

推荐文章

热门文章

相关标签