selenium--记录一次Java爬虫使用学习经历

为什么突然学习爬虫呢,当然因为工作需要,打造数据库时需要大量数据支撑,于是我去搜索java如何使用爬虫,当然是有很多库的,但是也有很多坑,学了两天才爬下来,小小记录下踩坑经历.....

 刚开始搜索时,说是使用jsoup可以做到爬虫效果,但是实操之后,局限性太大了,JSoup 是一个静态解析库,它无法执行页面上的 JavaScript 代码。并且!!!会被拦截报错412,于是了解到了今天的主角selenium。

selenium

应该是python中用的比较多,多用于自动化测试,当然也有java库。首先来了解一下他的用法,本次测试用到的是chrome浏览器作为模拟浏览器访问。

要使用selenium,首先需要:

  1. 安装 WebDriver 驱动程序:WebDriver 是 Selenium 的核心组件,用于控制浏览器进行自动化操作。根据您使用的浏览器类型(如 Chrome、Firefox、Edge 等),您需要下载相应浏览器的 WebDriver 驱动程序,并将其配置到您的项目中(这里必须注意浏览器和驱动的大版本号必须相同)。(本次测试使用版本为107.0.5304.122版本  chrome浏览器老版本下载地址Google Chrome 64bit Windows版_chrome浏览器,chrome插件,谷歌浏览器下载,谈笑有鸿儒)这里提供两个可以下载chromedriver驱动的地址(与浏览器匹配):http://chromedriver.storage.googleapis.com/index.html  CNPM Binaries Mirror
  2. 导入 Selenium 的依赖:在 Java 项目中,您需要添加 Selenium 的依赖。如果使用 Maven 进行依赖管理,可以在项目的 pom.xml 文件中添加 Selenium 的依赖项。(*这里导入selenium依赖时有大坑!!我找了一早上,selenium的版本和guava的版本兼容较差,需要特定版本才能使用*)提供可以使用的兼容版本(如果版本不兼容会报错"java.lang.NoSuchMethodError: com.google.common.collect.ImmutableMap.of(Ljava/lang/Object;Ljava/lang/")
           <dependency>
                <groupId>org.seleniumhq.selenium</groupId>
                <artifactId>selenium-java</artifactId>
                <version>4.1.1</version>
            </dependency>
    
            <dependency>
                <groupId>com.google.guava</groupId>
                <artifactId>guava</artifactId>
                <version>31.0.1-jre</version>
            </dependency>
  3. 写测试脚本
    //建立目标元虚拟浏览器链接
        private static void util(String url) {
            System.setProperty("webdriver.chrome.driver", "保存chromedriver.exe的路径");
            ChromeDriver chromeDriver = new ChromeDriver();
            chromeDriver.get(url);
            try {
                Thread.sleep(3000);//停留三秒等网页加载
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }
            List<WebElement> we = chromeDriver.findElement(By.className("u-list")).findElements(By.tagName("a"));//这里是我用来遍历网页中的u-list下的网页地址和网页名称
            HashMap<String, String> list = new HashMap<>();
            for (WebElement i : we) {
                String text = i.getText();
                String fullUrl = i.getAttribute("href");
                list.put(text, fullUrl);
            }
            chromeDriver.quit();//关闭浏览器
            specification(list);//这是我写的一个格式化网页数据的方法,可以自定义修改为下载网络文件等方法
        }
    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值