您现在的位置是:首页 > 技术人生 > 后端技术后端技术

selenium java操作页面常用方法示例-java爬虫之selenium(二)

高晓波2020-10-13【后端技术】人已围观

简介selenium的使用还是比较简单的,能达到类似于jQuery一样操作页面。
为什么选择selenium?
比较成熟一些的网站都有很多反爬措施,参数加密是常见的反爬措施中的一种,使用selenium相当于浏览器直接操作,不用花费大量时间精力去解密js。

selenium的使用还是比较简单的,能达到类似于jQuery一样操作页面。


为什么选择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();


 

Tags:selenium   chrome

很赞哦! ()

文章评论