java爬虫(基于selenium和chrome)

chromedriver驱动的淘宝镜像的地址: http://npm.taobao.org/mirrors/chromedriver/

java的jar包网址集合: http://selenium-release.storage.googleapis.com/index.html

springboot需要引入依赖:


    org.seleniumhq.selenium
    selenium-java
    3.9.0

以下代码环境为:谷歌浏览器 75.0.3770.100(正式版本64 位),驱动chromedriver为75.0.3770.90,jar包为3.9.0。

OK,准备工作完成,让我们开始爬虫,首先来个简单的例子:

public static void main(String[] args) {
    System.getProperties().setProperty("webdriver.chrome.driver","D:/chromedriver_win32/chromedriver.exe");
    //开启webDriver进程
    WebDriver webDriver = new ChromeDriver();
    webDriver.get("http://www.baidu.com");
    webDriver.close();
    webDriver.quit();
}

加载驱动,打开浏览器,打开百度,关闭。

下面来点儿复杂的,下面是通过ID找到百度首页的输入框,输入“js”点击搜索:

webDriver.findElement(By.id("kw")).sendKeys(new String[] {"js"});
webDriver.findElement(By.id("kw")).click();

官方API地址: https://seleniumhq.github.io/selenium/docs/api/java/index.html

获取页面元素的8中方法:

by.Id("kw")  //通过ID获取

by.name("kw")   //通过name属性获取

by.tagName("kw")   //通过标签名获取

by.className("kw")  //通过css的class名获取

by.linkText("kw")   //通过a标签的内容获取a标签

by.partialLinkText("w") //上一个方法的扩展,通过a标签的部分内容匹配

by.cssSelector("kw")    //通过css选择器匹配

by.XPath("")比较特殊,可以匹配任意的页面的元素

下面是相对路径的引用写法:
查找页面根元素://
查找页面上所有的input元素://input
查找页面上第一个form元素内的直接子input元素(即只包括form元素的下一级input元素)://form/input
查找页面上第一个form元素内的所有子input元素(只要在form元素内的input都算,不管还嵌套了多少个其他标签,使用相对路径表示,双//号)://form//input
查找页面上第一个form元素://form
查找页面上id为loginForm的form元素://form[@id='loginForm']
查找页面上具有name属性为username的input元素://input[@name='username']
查找页面上id为loginForm的form元素下的第一个input元素://form[@id='loginForm']/input[1]
查找页面具有name属性为contiune并且type属性为button的input元素://input[@name='continue'][@type='button']
查找页面上id为loginForm的form元素下第4个input元素://form[@id='loginForm']/input[4]
以百度主页为例,搜索框的HTML示例代码如下,其xpath为//*[@id=''kw]。

你可能感兴趣的:(日积月累)