6.1 Selenium环境搭建

本文详细介绍Selenium WebDriver在数据采集中的应用,包括与谷歌浏览器的结合使用、依赖引入、驱动下载、浏览器实例化及无界面模式设置,同时讲解了如何通过Selenium设置代理,避免爬虫被封禁。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.简介
Selenium WebDriver主要应用于程序与浏览器之间的交互,其可以用来实现数据的采集。Selenium不自带浏览器,需要与第三方浏览器结合使用,如本章与Selenium结合使用的浏览器为谷歌浏览器,相比Jsoup和HttpClient等工具,Selenium有其特有优势,如自动加载页面、执行JavaScript脚本、模拟真实的浏览器操作等。

2.引入依赖
在Idea或者Eclipse中创建Maven工程,并在Maven工程的pom.xml文件中添加Selenium的dependency,本专栏采用的版本是3.141.59。

<dependency>
   <groupId>org.seleniumhq.selenium</groupId>
   <artifactId>selenium-java</artifactId>
   <version>3.141.59</version>
</dependency>

基于pom.xml文件的配置信息,可以下载Selenium的jar包。在Selenium项目中,共包含如下图所示的若干个依赖包。
在这里插入图片描述

3.驱动下载
在相关的jar包配置完成后,需要下载Selenium WebDriver连接谷歌浏览器的工具chromedriver。在谷歌浏览器地址栏输入“chrome://version/”查看版本信息,然后在
“http://chromedriver.storage.googleapis.com/index.html”上寻找与谷歌浏览器版本相匹配的驱动版本。下载完成后,将文件解压到本地的自定义目录chrome文件夹下。

4.获取WebDriver
程序6-1中,使用setProperty(String key,String value)配置chromedriver,然后实例化WebDriver(声明使用的是谷歌浏览器)。

//程序6-1
public class WebDriverUtils {
    public static WebDriver getWebDriver(){
 		System.setProperty("webdriver.chrome.driver","/Users/steven/Documents/chrome/chromedriver");
        //声明使用的是谷歌浏览器
        ChromeOptions chromeOptions=new ChromeOptions();
        //实例化一个Chrome浏览器的实例
        WebDriver driver = new ChromeDriver();
        //设置打开的浏览器窗口最大化
        driver.manage().window().maximize();
        //设置隐性的等待时间
        driver.manage().timeouts().pageLoadTimeout(30, TimeUnit.SECONDS);
        return driver;
    }
}

使用Selenium采集数据,有时并不希望程序在终端打开浏览器,此时,可通过设置参数来隐藏浏览器,添加参数实现无界面状态。

//程序6-1
public class WebDriverUtils {
    public static WebDriver getWebDriver(){
		System.setProperty("webdriver.chrome.driver","/Users/steven/Documents/chrome/chromedriver");
        //声明使用的是谷歌浏览器
        ChromeOptions chromeOptions=new ChromeOptions();
        //设置无头模式参数
        chromeOptions.addArguments("--no-sandbox");
        chromeOptions.addArguments("-headless");
        chromeOptions.addArguments("--disable-gpu");
        //实例化一个Chrome浏览器的实例
        WebDriver driver = new ChromeDriver(chromeOptions);
        //设置打开的浏览器窗口最大化
        driver.manage().window().maximize();
        //设置隐性的等待时间
        driver.manage().timeouts().pageLoadTimeout(30, TimeUnit.SECONDS);
        return driver;
    }
}

5.设置代理
使用代理服务器访问网页内容,能够高度隐藏爬虫的真实IP地址,从而防止网络爬虫被服务器封锁, Selenium设置代理IP的方法如程序6-2所示。

//程序6-2
public class WebDriverProxyUtils {
    public static WebDriver getWebDriver() {
        System.setProperty("webdriver.chrome.driver", PathConstant.CHROME_DRIVER_PATH);
        ChromeOptions chromeOptions = new ChromeOptions();
        //设置代理
        Proxy proxy = new Proxy();
        proxy.setAutodetect(false);
        proxy.setHttpProxy("58.218.200.223:12781");
        proxy.setSslProxy("58.218.200.223:12781");
        chromeOptions.setCapability("proxy", proxy);
        chromeOptions.setExperimentalOption("excludeSwitches", Collections.singletonList("enable-automation"));
        //实例化一个Chrome浏览器的实例
        WebDriver driver = new ChromeDriver(chromeOptions);
        //设置打开的浏览器窗口最大化
        driver.manage().window().maximize();
        //设置隐性的等待时间
        driver.manage().timeouts().pageLoadTimeout(120, TimeUnit.SECONDS);
        return driver;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值