Java爬虫(一)
一、Java爬虫简介
1.1 Selenium
Selenium爬虫是一种基于浏览器自动化的爬虫技术,可以模拟用户的操作行为,实现对动态网页的爬取。
(图片来源网络,侵删)
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); } }
文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。