java爬虫的selenium基础使用
实用博客 selenium java教程
具体项目运用
项目背景:从西安市人民政府网站上获取到县区新闻,从下图可以看出“区县热点”是需要在页面中进行点击的,这里页面使用的是javascript的函数,无法获取到具体的链接,必须使用selenium进行模拟点击操作。

同样,在区县热点中点击下一页也是需要模拟点击的。

代码实现:
首先第一部分是建立好一个WebDriver,用以模拟点击等一系列的操作
private static long waitLoadBaseTime = 2000;
private static int waitLoadRandomTime = 2000;
private static Random random = new Random(System.currentTimeMillis());
public static WebDriver getDriver(String url_web) {
try {
// 等待数据加载的时间
// 为了防止服务器封锁,这里的时间要模拟人的行为,随机且不能太短
// long waitLoadBaseTime = 2000;
// int waitLoadRandomTime = 2000;
// Random random = new Random(System.currentTimeMillis());
// 设置 chrome 的路径,直接放在chrome的安装路径即可
String chrome = "C:\\Program Files (x86)\\Google\\Chrome\\Application\\chromedriver.exe";
System.setProperty("webdriver.chrome.driver", chrome);
ChromeOptions options = new ChromeOptions();
// 通过配置参数禁止data;的出现
options.addArguments(
"--user-data-dir=C:/Users/Administrator/AppData/Local/Google/Chrome/User Data/Default"); // 通过配置参数删除“您使用的是不受支持的命令行标记:--ignore-certificate-errors。稳定性和安全性会有所下降。”提示
options.addArguments("--start-maximized", "allow-running-insecure-content", "--test-type");
options.addArguments("--profile-directory=Default");
// userdata 设置使用chrome的默认参数
options.addArguments("--user-data-dir=C:/Temp/ChromeProfile"); //也可以只用自己配置的chrom 设置地址:如下
// options.addArguments("--user-data-dir=C:/Users/ZHL/AppData/Local/Google/Chrome/User Data"); // 创建一个 Chrome 的浏览器实例
WebDriver driver = new ChromeDriver(options); // 让浏览器访问微博主页
driver.get(url_web); // 等待页面动态加载完毕
Thread.sleep(waitLoadBaseTime+random.nextInt(waitLoadRandomTime)); return driver; } catch (Exception e) {
e.printStackTrace();
return null;
} }
然后就是具体的操作
public static void main(String[] args) throws Exception {
WebDriver dr = getDriver("http://www.xa.gov.cn/ptl/def/def/index_1121_6899_ci_trid_4305611-levNo_1-sortNo_0.html");
Actions action = new Actions(dr);
action.moveToElement(dr.findElement(By.id("div-c2-3"))).click().build().perform(); // 模拟点击
// 点击后要等待网页加载一段时间,然后才是最新的网页源码
Thread.sleep(18000);
System.out.println(dr.findElement(By.className("color-green")).getText());
List<WebElement> newsUrl = dr.findElements(By.cssSelector("li[class='col-md-10 padding-0']"));
System.out.println("newsUrl" + newsUrl.size());
for(WebElement e: newsUrl) {
String title = e.findElement(By.tagName("a")).getText();
String url = e.findElement(By.tagName("a")).getAttribute("href");
System.out.println("title:" + title);
System.out.println("url:" + url);
}
System.out.println(dr.findElement(By.className("color-green")).getText());
System.out.println(dr.findElement(By.id("div-c2-3")).getAttribute("onclick"));
}
java爬虫的selenium基础使用的更多相关文章
- 【Python爬虫】selenium基础用法
selenium 基础用法 阅读目录 初识selenium 基本使用 查找元素 元素互交操作 执行JavaScript 获取元素信息 等待 前进后退 Cookies 选项卡管理 异常处理 初识sele ...
- java爬虫之入门基础
相比于C#,java爬虫,python爬虫更为方便简要,首先呢,python的urllib2包提供了较为完整的访问网页文档的API,再者呢对于摘下来的文章,python的beautifulsoap提供 ...
- 学习用java基于webMagic+selenium+phantomjs实现爬虫Demo爬取淘宝搜索页面
由于业务需要,老大要我研究一下爬虫. 团队的技术栈以java为主,并且我的主语言是Java,研究时间不到一周.基于以上原因固放弃python,选择java为语言来进行开发.等之后有时间再尝试pytho ...
- webmagic的设计机制及原理-如何开发一个Java爬虫
之前就有网友在博客里留言,觉得webmagic的实现比较有意思,想要借此研究一下爬虫.最近终于集中精力,花了三天时间,终于写完了这篇文章.之前垂直爬虫写了一年多,webmagic框架写了一个多月,这方 ...
- JAVA爬虫 WebCollector
JAVA爬虫 WebCollector 爬虫简介: WebCollector是一个无须配置.便于二次开发的JAVA爬虫框架(内核),它提供精简的的API,只需少量代码即可实现一个功能强大的爬虫. 爬虫 ...
- webmagic的设计机制及原理-如何开发一个Java爬虫 转
此文章是webmagic 0.1.0版的设计手册,后续版本的入门及用户手册请看这里:https://github.com/code4craft/webmagic/blob/master/user-ma ...
- Python+Selenium基础入门及实践
Python+Selenium基础入门及实践 32018.08.29 11:21:52字数 3220阅读 23422 一.Selenium+Python环境搭建及配置 1.1 selenium 介绍 ...
- JAVA爬虫实践(实践三:爬虫框架webMagic和csdnBlog爬虫)
WebMagic WebMagic是一个简单灵活的Java爬虫框架.基于WebMagic,你可以快速开发出一个高效.易维护的爬虫. 采用HttpClient可以实现定向的爬虫,也可以自己编写算法逻辑来 ...
- [Python爬虫]使用Selenium操作浏览器订购火车票
这个专题主要说的是Python在爬虫方面的应用,包括爬取和处理部分 [Python爬虫]使用Python爬取动态网页-腾讯动漫(Selenium) [Python爬虫]使用Python爬取静态网页-斗 ...
随机推荐
- Obj文件和Bin文件
本文导读:在用visual studio 编程时,会看到项目文件中含有bin和obj这两个文件夹,那么这两个文件夹具体包含一些什么东西的,具体作用是什么? 一.Bin文件夹 1.用来保存项目生成后程序 ...
- solarwinds之配置系统管理(System manager)
配置windows的 1. 打开System Manager 2. 点击new新加一个接口 3. 选择要监控的资源 4. 确认好自己要监控的资源后如下 5. 这里以监控内存使 ...
- Caffe CommonLayer分析
Caffe CommonLayer分析 \(Caffe\)中包含了很多通用的功能层,包含了\(concat\),\(slice\),\(split\),\(crop\),\(flip\),\(scal ...
- soapUI检查webServices接口的方法以及对自动触发线程的查询
这几天需要熟悉接口传输过来的数据,因此会用到soapUI,但是没结果这个工具,然后百度了下,结合了下,下面是我对webservice在soapUI的展现: 1:其实说白了,就是我们不知道从接口里传输过 ...
- ZBrush破解版真的好用么?
安装ZBrush®的时候是不是经常出现各种奇葩问题,使用ZBrush时候是不是经常出现停止工作状况,究其原因,原来都是破解搞的鬼.ZBrush破解版你还敢用么? 随着国人对版权的重视,越来越多的制作商 ...
- Kattis - Eight Queens
Eight Queens In the game of chess, the queen is a powerful piece. It can attack by moving any number ...
- JQuery中text(),html(),val()的区别
这3个都是jquery类库中的语法,分别是: text():获取或者改变指定元素的文本: html():获取或改变指定元素的html元素以及文本: val():获取或者改变指定元素的value值(一般 ...
- Unity5.X 编辑器介绍
导航窗口中有一个 Add Asset Package 按钮,可以导入一些官方的资源包,例如Characters角色控制器 Windows → Layouts 可以更换窗口的摆放 常见视图 ...
- 《Exception》第八次团队作业:Alpha冲刺(第二天)
一.项目基本介绍 项目 内容 这个作业属于哪个课程 任课教师博客主页链接 这个作业的要求在哪里 作业链接地址 团队名称 Exception 作业学习目标 1.掌握软件测试基础技术.2.学习迭代式增量软 ...
- POJ 3122 Pie( 二分搜索 )
链接:传送门 题意:一个小朋友开生日派对邀请了 F 个朋友,排队上有 N 个 底面半径为 ri ,高度为 1 的派,这 F 个朋友非常不友好,非得"平分"这些派,每个人都不想拿到若 ...