您现在的位置是:首页 > 技术人生 > 后端技术后端技术
selenium java操作页面常用方法示例-java爬虫之selenium(二)
高晓波2020-10-13【后端技术】人已围观
简介selenium的使用还是比较简单的,能达到类似于jQuery一样操作页面。
为什么选择selenium?
比较成熟一些的网站都有很多反爬措施,参数加密是常见的反爬措施中的一种,使用selenium相当于浏览器直接操作,不用花费大量时间精力去解密js。
selenium的使用还是比较简单的,能达到类似于jQuery一样操作页面。
为什么选择selenium?
比较成熟一些的网站都有很多反爬措施,参数加密是常见的反爬措施中的一种,使用selenium相当于浏览器直接操作,不用花费大量时间精力去解密js。
1、引入selenium jar包
2、创建chrome driver对象,并进行一些参数设置
3、chrome driver对象使用
为什么选择selenium?
比较成熟一些的网站都有很多反爬措施,参数加密是常见的反爬措施中的一种,使用selenium相当于浏览器直接操作,不用花费大量时间精力去解密js。
1、引入selenium jar包
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>3.141.59</version>
</dependency>
2、创建chrome driver对象,并进行一些参数设置
private WebDriver createWebDriver(){
//新增一个预操作对象
ChromeOptions options =new ChromeOptions();
//删除提示栏
options.addArguments("disable-infobars");
// 设置后台静默模式启动浏览器
options.addArguments("--headless");
options.addArguments("--no-sandbox");
options.addArguments("--disable-gpu");
options.addArguments("--disable-dev-shm-usage");
//无痕模式
options.addArguments("--incognito");
//使用代理
options.addArguments("–proxy-server=http://ip:端口");
//设置header,以user-agent为例
options.addArguments("user-agent=Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36");
Map<String, Object> prefs = new HashMap<String, Object>();
//禁止弹出通知
prefs.put("profile.default_content_setting_values.notifications", 2);
//禁止加载图片
prefs.put("profile.managed_default_content_settings.images", 2);
//禁止加载css
prefs.put("permissions.default.stylesheet", 2);
options.setExperimentalOption("prefs", prefs);
System.setProperty("webdriver.chrome.driver", "/usr/local/chromedriver");
WebDriver webDriver = new ChromeDriver(options);
//全屏
webDriver.manage().window().maximize();
//删除所有cookie
webDriver.manage().deleteAllCookies();
//设置全局等待时间:等待10秒如果某元素还未出现,操作时该元素会报错
webDriver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
return webDriver;
}
3、chrome driver对象使用
//添加cookie
Cookie cookie = new Cookie("name", "value");
webDriver.manage().addCookie(cookie);
//打开页面
webDriver.get("https://www.baidu.com");
//通过css选择器获取页面元素,除此之外还有id选择器、标签选择器,xpath选择器等等,此处不一一列举
WebElement pageList = webDriver.findElement(By.cssSelector("div.st-pagelink"));
//点击
pageList.click();
//获取元素内部html代码
String html = pageList.getAttribute("innerHTML");
//执行js代码
String jsResult = ((JavascriptExecutor) webDriver).executeScript("return " + script).toString();
很赞哦! ()
随机图文
-
SpringBoot排除自动配置
SpringBoot的自动配置给我们开发带来了极大的便利,但有些时候也带来了一些问题。 问题场景: 该项目是基于Springboot + dubbo的微服务架构,框架结构web + facade + service,某 -
maven安装jar到本地仓库
JAVA做淘宝客程序开发的时候,我用的是maven管理依赖jar包。 如何将阿里妈妈下载的jar包以及source jar安装到maven本地仓库呢? -
通过Redis限制API调用次数
最近在做微信公众号返利机器人,通过曲线救国的方式拿到的淘宝客工具商权限(用别人的App Key),在服务器搭建了透传程序。 使用过程中发现一个问题:阿里妈妈对淘宝API的调用频率有限制,报错信息反馈是40次/秒。 -
Springboot集成quartz定时任务可视化配置
使用quartz定时任务已经有一段时间了,今天记录一下Springboot 2.x集成Quartz。