selenium+ChromeDriver+java爬虫初探

selenium+ChromeDriver+java爬虫初探

  • selenium
  • ChromeDriver
  • 简单的demo

selenium

自动化测试工具,可以完全模拟人的行为。我们可以用它来打开浏览器,访问指定URL,并且定位到具体的按钮,点击触发事件等等。

ChromeDriver

selenium和谷歌浏览器交互,需要这个驱动。下载地址(http://npm.taobao.org/mirrors/chromedriver/)。版本和谷歌浏览器的版本要一致,或者相差不多也行。

简单的demo

//设置谷歌驱动的位置,这就是我们刚才下载下来的驱动,可以放到任意位置,只要有访问权限就行
System.setProperty("webdriver.chrome.driver","D:\\chromedriver.exe");

 ChromeDriver webDriver=new ChromeDriver();
 webDriver.get("https://www.baidu.com");//打开谷歌浏览器,并且访问百度

 //定位到百度搜索框
 WebElement elementByCssSelector = webDriver.findElementByCssSelector("#kw");
 //输入搜索关键字 【java语言】
 elementByCssSelector.sendKeys("java语言");

 //定位按钮并且点击按钮进行搜索
 webDriver.findElementById("su").click();

//循环点击下一页,获取百度10也数据。
 for (int i = 0; i <10 ; i++) {
     //等待5秒,等页面渲染完毕,不然获取不到元素
     TimeUnit.SECONDS.sleep(5);

     //定位下一页按钮
     List<WebElement> elements = webDriver.findElementById("page").findElement(By.className("page-inner")).findElements(By.className("n"));
     //如果找到两个元素,说明不是第一页,会多一个上一页按钮
     if(elements.size()>1){
         //点击下一页
         elements.get(1).click();
     }else{
         //点击下一页
         elements.get(0).click();
     }
 }

热门文章

暂无图片
编程学习 ·

C语言期末考试内容(2)选择填空答案整理(基础章节内容)

C语言期末考试内容(2)选择填空答案整理(基础章节内容)文章目录C语言期末考试内容(2)选择填空答案整理(基础章节内容)作业二:变量定义/读/写与数据的存储表示一、判断题:答案: F F F F解析:1-4:C语言中的结束符是以分号来结束的,一个分号就代表一条语句。二、单选…
暂无图片
编程学习 ·

Qt QTreeWidget的级联选中

在使用QTreeWidget显示文件树时,需要对树的节点做一些功能的限制:勾选某一节点时,该节点的子项自动全部选中 子项部分勾选时,父节点状态为部分勾选 子项全部勾选时,父节点自动设置勾选首先,查看了Qt文档,发现竟然没有提供这个功能,所以自己写了一个简单的例子。 先看效…
暂无图片
编程学习 ·

leetcode 124. 二叉树中的最大路径和

题目 给定一个非空二叉树,返回其最大路径和。 本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列。该路径至少包含一个节点,且不一定经过根节点。 思路 简单题,dfs返回当前节点为一端的最大链。答案有两种情况,1 当前节点到子孙的一条链 2 当前节点为中端,…
暂无图片
编程学习 ·

吐血整理各种二叉树(BST、AVL、Red Black、B、B+)

前言 没有必要过度关注二叉树的增删改导致的结构改变,规则操作什么的了解一下就好,看不下去就跳过,本文过多的XX树操作图片纯粹是为了作为规则记录,该文章主要目的是增强下个人对各种常用XX树的设计及缘由的了解,也从中了解到常用的实现案例使用XX树实现的原因。 数据在计…
暂无图片
编程学习 ·

内网穿透工具 frp

内网穿透工具 frp 荐国网络工具包授权协议: GPL开发语言: Google Go操作系统: 跨平台收录时间: 2016-08-01提 交 者: FateDier收藏1145评论62分享软件介绍资讯 (8)问答 (2)博客 (99+)我要提问frp 是一个高性能的反向代理应用,可以帮助您轻松地进行内网穿透,对外网提供服务,支…
暂无图片
编程学习 ·

Netty

Netty是什么?异步事件驱动的网络应用框架,可以快速开发一个可维护的高性能的服务端和客户端。都是谁在用Netty?Dubbo、zk、RocketMQ、es、Spring5(对于Http协议的实现)、Spak等大型开源项目使用Netty作为底层通讯的实现。Netty中的核心概念是什么?1、Channel管道,是对Sock…
暂无图片
编程学习 ·

制药业中的自然语言处理(NLP)

文章目录NLP 用于发现新药物化合物NLP 用于将参与者纳入临床试验药品营销的 NLP参考资料 转载来源:https://zhuanlan.zhihu.com/p/140044281自然语言处理(NLP)在制药业的使用似乎少于机器视觉和预测分析等 AI 方法,但尽管如此,NLP 在制药业仍有一些应用。该行业主要处理结…
暂无图片
编程学习 ·

《忍者必须死3》游戏体验报告

(下文将《忍者必须死3》简称为忍3)一、背景1.1忍者必须死3流行原因分析1、情怀因素忍3的第一版游戏诞生于14年,第一版对标天天酷跑,第一版吸引用户的原因在于14年跑酷游戏众多而第一版不是氪金游戏玩法画风也算独树一帜。14年忍1的主要目标用户画像为经济能力有限的学生群体…
暂无图片
编程学习 ·

LeetCode刷题之动态规划的解题方法及相关练习

从集合的角度来考虑DP问题,用某一个数来代表一类数线性DP: 快乐的LeetCode — 53.最大子序和快乐的LeetCode — 120. 三角形最小路径和多口味LeetCode — 63. 不同路径 II多味的LeetCode — 91. 解码方法区间DP问题 多味的LeetCode — 198. 打家劫舍多味的LeetCode — 300. 最…
暂无图片
编程学习 ·

Linux彻底卸载Nginx

本机环境:centos7使用yum安装的Nginx1.首先输入命令 ps -ef | grep nginx检查一下nginx服务是否在运行。[root@localhost /]# ps -ef |grep nginx root 3163 2643 0 14:08 tty1 00:00:00 man nginx root 5427 1 0 14:50 ? 00:00:00 nginx: m…
暂无图片
编程学习 ·

Spring Boot, MySQL, JPA, Hibernate Restful CRUD API Tutorial

Spring Boot MySQL JPA Hibernate Restful CRUD API TutorialSpring Boot has taken Spring framework to the next level. It has drastically reduced the configuration and setup time required for spring projects. Spring Boot将Spring框架提升到了一个新的高度。它大大…
暂无图片
编程学习 ·

Spring源码解析 - springMVC核心代码(一)

一、首先来讲解下springMVC的底层工作流程1、首先我们重点放在前端控制器(DispatcherServlet)其类图:因为从流程图看,用户的请求最先到达就是DispatcherServlet。他是springmvc的核心,也是中央出处理器。因此我们分析源码,先看看他是什么样的流程:通过源码可看到:他是继…
暂无图片
编程学习 ·

当你忘记网站上的密码时怎么办?Python如何快速帮你找回?

前言本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。现如今浏览器可谓是五花八门,火狐、UC、360、QQ 这些浏览器不论美观还是所谓的安全方面都做的很符合我们需求。但如果你的工作与 IT 挂钩,无疑 Chr…
暂无图片
编程学习 ·

【区间 dp】A023_LC_合并石头的最低成本(穷举分割点)

一、Problem 有 N 堆石头排成一排,第 i 堆中有 stones[i] 块石头。 每次移动(move)需要将连续的 K 堆石头合并为一堆,而这个移动的成本为这 K 堆石头的总数。 找出把所有石头合并成一堆的最低成本。如果不可能,返回 -1 。 Input: stones = [3,2,4,1], K = 2 Output: 20 Ex…
暂无图片
编程学习 ·

css rgba/hsla知识点讲解及半透明边框

一、RGBA(R,G,B,A) 参数: R:红色值。正整数 | |百分数G:绿色值。正整数 | |百分数B:蓝色值。正整数 | |百分数A:Alpha透明度。取值0~1之间。说明:此色彩模式与RGB相同,只是在RGB模式上新增了Alpha透明度。 RGBA 颜色值得到以下浏览器的支持:IE9+、Firefox 3+、Chrome、S…
暂无图片
编程学习 ·

LeetCode 535. TinyURL 的加密与解密

目录结构1.题目2.题解1.题目TinyURL是一种URL简化服务, 比如:当你输入一个URL https://leetcode.com/problems/design-tinyurl 时,它将返回一个简化的URL http://tinyurl.com/4e9iAk.要求:设计一个 TinyURL 的加密 encode 和解密 decode 的方法。你的加密和解密算法如何设计…
暂无图片
编程学习 ·

CSS hack

CSS hack的目的是使CSS代码兼容不同的浏览器,主要的属性如下所示: _:选择IE6及以下。连接线(中划线)(-)亦可使用,为了避免与某些带中划线的属性混淆,所以使用下划线(_)更为合适; *:选择IE7及以下。(+)与(#)之类的均可使用,不过业界对(*)的认知度更高; \9:…
暂无图片
编程学习 ·

mui案例:导航栏 颜色渐变

mui导航栏 滚动渐变 代码参考 代码: <!DOCTYPE html> <html><head><meta charset="utf-8"><title>Hello MUI</title><meta name="viewport" content="width=device-width, initial-scale=1,maximum-scale=…