当前位置: 首页 > news >正文

Java爬虫(一)

一、Java爬虫简介

1.1 Selenium

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

1.2 jsoup

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

1.3 浏览器驱动下载

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

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

二、引入依赖

        <jsoup.version>1.17.2</jsoup.version><selenium-java.vesion>4.21.0</selenium-java.vesion><dependency><groupId>org.jsoup</groupId><artifactId>jsoup</artifactId><version>${jsoup.version}</version></dependency><dependency><groupId>org.seleniumhq.selenium</groupId><artifactId>selenium-java</artifactId><version>${selenium-java.vesion}</version></dependency>

三、测试

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;@BeforeAllpublic 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();}@Testvoid 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();}@Testvoid 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();}@Testpublic void test_find_element_2() {// 加载 Chrome 浏览器驱动driver = new ChromeDriver();ThreadUtils.sleep(3);//设置访问地址String url = "https://www.baidu.com/";driver.get(url);List<WebElement> 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());}}@Testpublic 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();}@Testpublic 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);}
}

http://www.lryc.cn/news/380110.html

相关文章:

  • element-plus form表单组件之el-date-picker日期选择器组件
  • 如何与情绪好好相处,真正成为情绪的主人
  • RK3588/算能/Nvidia智能盒子:[AI智慧油站」,以安全为基,赋能精准经营
  • 【眼在手外D435相机支架】
  • js组合继承
  • Spring-kafka消费者消费的一些问题
  • 【自我提升】提升能量书籍
  • python图像处理库-PIL(Pillow)
  • 【2024】kafka streams的详细使用与案例练习(2)
  • qt 简单实验 读取json格式的配置文件
  • Docker常用命令与实战示例
  • 数据结构(基础知识)
  • 计算机网络:网络层 - 路由选择协议
  • JupyterLab使用指南(六):JupyterLab的 Widget 控件
  • OpenCV 特征点检测与匹配
  • css布局之flex应用
  • 树莓派4B设置AP热点步骤
  • Java程序之百鸡百钱问题
  • Mybatis——动态sql
  • 可视化大屏开发系列——页面布局
  • Python statistics 模块
  • wireshark常见使用表达式
  • 用Java获取键盘输入数的个十百位数
  • 第10章 启动过程组 (制定项目章程)
  • html侧导航栏客服栏
  • Clonable接口和拷贝
  • 关于小蛋の编程和小蛋编程为同一作者的说明
  • 大数据平台之Spark
  • How to use ModelSim
  • 【专业英语 复习】第8章 Communications and Networks