JAVA自动化/爬虫 ---- WebDriver的使用

JAVA自动化/爬虫 ---- WebDriver的使用

使用它的原因

由于项目上需要用用户输入的地址抓取一部分其他网页的信息回填到表单中。但是有些信息是动态加载的,单纯使用httpClent请求获取到的页面信息是不完整的,那些动态加载的数据就拿不到。这样一来,你要不然就在js里面找他的api接口,自行获取,要不然就想办法等页面全部加载完成,你再获取页面信息。找他人api有点繁琐,找到了还不一定能请求成功。所以我就使用的等页面加载完成。

使用方法

一、maven信息

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

二、下载匹配自己浏览器的驱动(本案例使用chromeDriver,你也可也使用其他的操作一致)

查看自己谷歌浏览器的版本在这里插入图片描述
linux使用google-chrome --version 查看
在这里插入图片描述
进入驱动下载地址(https://chromedriver.chromium.org/downloads在这里插入图片描述
找和自己版本对应的驱动
在这里插入图片描述
放到你的文件夹下解压。

代码

这是yml文件 应为我本地是windows,服务器是linux的

webdriver:
  windows: D:\迅雷下载\chromedriver_win32\chromedriver.exe
  linux: /data/webDriver/chromedriver

主要代码

@Value("${webdriver.windows}")
    private String WINDRIVER;
@Value("${webdriver.linux}")
    private String LINUXDRIVER;
public void getInfo(@RequestParam("url")String url){
        try {
            String os = System.getProperty("os.name");
            String drivers="";
            //Windows操作系统
            if (os != null && os.toLowerCase().startsWith("windows")) {
                System.out.println(String.format("当前系统版本是:%s", os));
                drivers=WINDRIVER;
            } else if (os != null && os.toLowerCase().startsWith("linux")) {//Linux操作系统
                System.out.println(String.format("当前系统版本是:%s", os));
                drivers=LINUXDRIVER;
            } else { //其它操作系统
                System.out.println(String.format("当前系统版本是:%s", os));
            }
            System.out.println("drivers="+drivers);
            //   /data/webDriver/chromedriver
            System.setProperty("webdriver.chrome.driver", drivers);
            ChromeOptions chromeOptions = new ChromeOptions();
            // 禁用沙箱  -- 这个Option很重要,不然linux可能就报错了
            chromeOptions.addArguments("--no-sandbox");
            chromeOptions.addArguments("--disable-dev-shm-usage");
            chromeOptions.addArguments("--headless");
            WebDriver driver = new ChromeDriver(chromeOptions);
            driver.get(url);
            // 等待页面标题包含 "Example" 字符串,最多等待 4 秒钟
            WebDriverWait wait = new WebDriverWait(driver, 4);
            //也可也当某个标签加载后返回
//        wait.until(ExpectedConditions.titleContains("Example"));
            List<String> txtList=new ArrayList<>();
            //文字
            //比如要获取<div class="a"><a><li>我是帅雷雷</li></a></div> 可以这样写driver.findElements(By.cssSelector(".a a li"));
            List<WebElement> elements = driver.findElements(By.cssSelector("这个就是css选择的写法"));
            for (int i = 0; i < elements.size(); i++) {
                System.out.println(elements.get(i).getText());
            }
            //记得关闭资源
            driver.quit();
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("发生错误"+DateUtils.getCurrentTimeString());
            return new Result().ok("");
        }
    }
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值