Java爬虫(一)

06-27 1387阅读

一、Java爬虫简介

1.1 Selenium

        Selenium爬虫是一种基于浏览器自动化的爬虫技术,可以模拟用户的操作行为,实现对动态网页的爬取。

Java爬虫(一)
(图片来源网络,侵删)

1.2 jsoup

         Jsoup拥有十分方便的api来处理html文档,比如参考了DOM对象的文档遍历方法,参考了CSS选择器的用法等等。

1.3 浏览器驱动下载

        下载指定的浏览器驱动,需要和自己电脑上的浏览器版本一致。

  • Chrome驱动下载地址
  • Microsoft Edge驱动下载地址
  • Firefox驱动下载地址

    二、引入依赖

            1.17.2
            4.21.0
            
                org.jsoup
                jsoup
                ${jsoup.version}
            
            
                org.seleniumhq.selenium
                selenium-java
                ${selenium-java.vesion}
            

    三、测试

    import java.time.Duration;
    import java.util.List;
    import lombok.extern.slf4j.Slf4j;
    import org.junit.jupiter.api.AfterEach;
    import org.junit.jupiter.api.BeforeAll;
    import org.junit.jupiter.api.Test;
    import org.openqa.selenium.By;
    import org.openqa.selenium.Dimension;
    import org.openqa.selenium.Keys;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.WebElement;
    import org.openqa.selenium.chrome.ChromeDriver;
    import org.openqa.selenium.interactions.Actions;
    @Slf4j
    class WebCrawlerUtilTest {
        private static WebDriver driver;
        @BeforeAll
        public static void setUp() {
            String webdriverName = "webdriver.chrome.driver";
            String driverPath = "E:\\Java_Tools\\Browser_driver\\Chrome\\version_126\\chromedriver-win64\\chromedriver.exe";
            // 设置Chrome驱动位置
            System.getProperties().setProperty(webdriverName, driverPath);
        }
        @AfterEach()
        public void after() {
            ThreadUtils.sleep(Duration.ofSeconds(5));
            driver.quit();
        }
        @Test
        void test_open_browser() {
            // 加载 Chrome 浏览器驱动
            driver = new ChromeDriver();
            ThreadUtils.sleep(3);
            //设置访问地址
            String url = "https://www.baidu.com/";
            driver.get(url);
            // 新标签页打开百度新闻
            driver.findElement(By.linkText("新闻")).click();
            // 新标签页打开百度视频
            driver.findElement(By.linkText("地图")).click();
        }
        @Test
        void test_find_element() {
            // 加载 Chrome 浏览器驱动
            driver = new ChromeDriver();
            ThreadUtils.sleep(3);
            //设置访问地址
            String url = "https://www.baidu.com/";
            driver.get(url);
            // 新标签页打开百度新闻
            WebElement we = driver.findElement(By.xpath("//input[@id='kw']"));
            // 往搜索框里输入”五一“的搜索内容
            we.sendKeys("五一");
            we = driver.findElement(By.id("su"));
            we.click();
        }
        @Test
        public void test_find_element_2() {
            // 加载 Chrome 浏览器驱动
            driver = new ChromeDriver();
            ThreadUtils.sleep(3);
            //设置访问地址
            String url = "https://www.baidu.com/";
            driver.get(url);
            List wes = driver.findElements(By.className("title-content-title"));
            log.info("find_elements()返回的数据类型是:type({}})", wes);
            for (WebElement we : wes) {
                log.info(we.toString());
                log.info(we.getText());
            }
        }
        @Test
        public void test_mouse_action() {
            // 加载 Chrome 浏览器驱动
            driver = new ChromeDriver();
            ThreadUtils.sleep(3);
            //设置访问地址
            String url = "https://www.baidu.com/";
            driver.get(url);
            // 设置浏览器窗口的大小,driver.set_window_size(宽,高);
            driver.manage().window().setSize(new Dimension(1200, 800));
            WebElement we = driver.findElement(By.id("s-usersetting-top"));
            Actions action = new Actions(driver);
            action.moveToElement(we).perform();
            ThreadUtils.sleep(5);
            WebElement we2 = driver.findElement(By.linkText("图片"));
            action.contextClick(we2).perform();
            ThreadUtils.sleep(5);
            // 用于刷新当前页面
            driver.navigate().refresh();
        }
        @Test
        public void test_keyboard_action() {
            // 加载 Chrome 浏览器驱动
            driver = new ChromeDriver();
            ThreadUtils.sleep(3);
            //设置访问地址
            String url = "https://www.baidu.com/";
            driver.get(url);
            WebElement we = driver.findElement(By.id("kw"));
            // 模拟键盘操作
            we.sendKeys("五一");
            // 使用回车代替点击 driver.find_element(By.ID, "su")
            we.sendKeys(Keys.ENTER);
        }
    }
VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]