selenium基于java的抓取数据以及selenium常用api总结

一、配置驱动与属性

我主要是使用谷歌的驱动,来模仿谷歌浏览器点击。

下载驱动地址:https://npm.taobao.org/mirrors/chromedriver/

选择版本要根据自己电脑的谷歌浏览器版本来决定下载(在右上角帮助点击关于Google)

//配置驱动路径
System.setProperty("webdriver.chrome.driver", "D:\\chromedriver.exe");
//配置驱动属性
ChromeOptions chromeOptions = new ChromeOptions();
//不显示图片
chromeOptions.addArguments("blink-settings=imagesEnabled=false");
//浏览器最大化(不是全屏)
chromeOptions.addArguments("--start-maximized");
// 打开或者关闭浏览器视图
chromeOptions.addArguments("--no-sandbox");
chromeOptions.addArguments("--disable-dev-shm-usage");
chromeOptions.addArguments("--headless");
//使用代理
chromeOptions.addArguments("--proxy-server=http://" + ip+端口);
//创建一个google浏览器驱动,并且注入配置属性,这个时候会创建一个浏览器
WebDriver webDriver = new ChromeDriver(chromeOptions);

二、常用API

webDriver.get(url)                                                 浏览器访问url地址
webDriver.quit()                                                   退出浏览器
webDriver.findElements(By.xpath(""))                               通过xpath返回指定标签,返回是list集合的
webDriver.findElement(By.xpath(""))                                返回的是单个WebElement标签
webElement.getAttribute("href")                                    返回标签的属性value,例如<a href="value"></a>
webElement.findElement(By.xpath("./"))                             返回当前标签下的指定子标签,./指当前标签的xpathwebElement.click();                                           点击标签,例如点击下一页按钮,选择按钮标签
跳到标签的位置,一般是为了防止未加载完全,跳到该标签再执行下一个操作
((JavascriptExecutor) webDriver).executeScript("arguments[0].scrollIntoView();", webElement);  
//sendKeys相当于模拟键盘按键,并且可以实现组合按键,可参考:https://blog.youkuaiyun.com/weixin_44065501/article/details/89314538
webElement.sendKeys(Keys.UP);                                      所在标签向上滑一格
webElement.sendKeys(Keys.DOWN);                                    所在标签向下滑一格
webDriver.findElement(By.tagName("html")).sendKeys(Keys.END);      获取html的标签然后滑动到最下,一般为了加载全网页
webElement.sendKeys("输入框的内容");                                如果标签是输入框可以输入内容webElement.clear();                                                如果标签是输入框可以清空输入内容             Actions actions = new Actions(webDriver);                          浏览器的行为操作apiactions.moveToElement(webElement).click().perform();            移动到指定标签并且点击操作(类似模拟鼠标) 
切换到其他的iframe中再去使用xpath获取标签,一个页面可能存在不同的frame,需要切换frame才能获取到的标签,如果你发现xpath获取不到标签,这可能是其中一个原因
webDriver.switchTo().frame(webDriver.findElement(By.xpath("iframe")));

三、XPATH使用

最简单的方法就是直接在浏览器Elements >  选中标签右键  >  Copy  >  CopyXPath中获取想要标签xpath,但是可能存在多个相同内容的网页xpath位置不固定,并且通过xpath去获取标签会出现存在多个的现象,很多时候我们需要找到一个稳定不变的并且唯一的xpath。

我们可以通过以下一些xpath规则组合获取指定标签:

//*[@class=\"value\"]                                         获取class=value的标签                   
//*[@id=\"value\"]                                            获取id=value的标签                       
//*[contains(@class,'value')]                                 获取class包含value的标签
//*[text()=\"value\"]                                         获取标签text内容是value的标签
//*[@class='value1'][text()=\"value2\"]                       []单个条件,组合条件获取class=value1并且内容是value2
//*[@id=\"value\"]/div[1]/div/span[2]                         获取id=value下的第一个div下的div下的第二个span
./div                                                         获取当前标签的下的div标签
//*a[last()]                                                  获取a标签集合的最后一个,如果last()-1就是倒数第二个//*[@class=value]/..                                        获取class=value的父级标签
//*[@class=\value\"]//a                                       获取class=value下的所有a标签  //:包含所有子标签
//*a[not (contains(@class,\"value\"))]                        获取所有不满足class包含value的a标签        

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值