当前位置:首页 > Java

java如何爬数据

2026-03-20 18:21:52Java

Java 爬取数据的方法

使用 Jsoup 库解析 HTML

Jsoup 是一个开源的 Java HTML 解析库,适合处理静态网页数据。它提供类似 jQuery 的 DOM 操作方法,能够方便地提取网页内容。

添加依赖(Maven):

<dependency>
    <groupId>org.jsoup</groupId>
    <artifactId>jsoup</artifactId>
    <version>1.15.4</version>
</dependency>

示例代码:

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

public class JsoupExample {
    public static void main(String[] args) throws Exception {
        String url = "https://example.com";
        Document doc = Jsoup.connect(url).get();
        Elements links = doc.select("a[href]");
        for (Element link : links) {
            System.out.println(link.attr("href"));
        }
    }
}

使用 HttpClient 处理动态内容

对于需要处理 JavaScript 渲染的动态网页,可结合 HttpClient 和 HtmlUnit 等工具。

HttpClient 示例:

java如何爬数据

import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;

public class HttpClientExample {
    public static void main(String[] args) throws Exception {
        CloseableHttpClient client = HttpClients.createDefault();
        HttpGet request = new HttpGet("https://example.com/api/data");
        CloseableHttpResponse response = client.execute(request);
        String html = EntityUtils.toString(response.getEntity());
        System.out.println(html);
    }
}

使用 Selenium 自动化浏览器

当目标网站采用复杂反爬机制时,Selenium 可模拟真实用户操作。

配置示例:

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

public class SeleniumExample {
    public static void main(String[] args) {
        System.setProperty("webdriver.chrome.driver", "path/to/chromedriver");
        WebDriver driver = new ChromeDriver();
        driver.get("https://example.com");
        String pageSource = driver.getPageSource();
        System.out.println(pageSource);
        driver.quit();
    }
}

数据存储处理

提取后的数据可存入数据库或文件系统。JDBC 示例:

java如何爬数据

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;

public class DatabaseExample {
    public static void main(String[] args) throws Exception {
        String url = "jdbc:mysql://localhost:3306/mydb";
        Connection conn = DriverManager.getConnection(url, "user", "password");
        PreparedStatement stmt = conn.prepareStatement("INSERT INTO data VALUES (?)");
        stmt.setString(1, "extracted data");
        stmt.executeUpdate();
        conn.close();
    }
}

反爬虫策略应对

设置合理间隔:

Thread.sleep(3000); // 3秒延迟

使用代理IP:

System.setProperty("http.proxyHost", "proxy.example.com");
System.setProperty("http.proxyPort", "8080");

修改请求头:

Document doc = Jsoup.connect(url)
    .userAgent("Mozilla/5.0")
    .header("Accept-Language", "en-US")
    .get();

注意:实际开发中应遵守网站的 robots.txt 协议,避免高频请求造成服务器压力。

标签: 数据java
分享给朋友:

相关文章

java如何输出

java如何输出

输出到控制台 使用 System.out.println() 方法输出内容到控制台,适用于调试或简单信息展示。 示例代码: System.out.println("Hello, World!")…

java如何输入

java如何输入

使用Scanner类进行输入 Scanner类是Java中最常用的输入工具,适用于从控制台或文件读取数据。需要导入java.util.Scanner包。 基本语法: Scanner sca…

java如何安装

java如何安装

安装Java的步骤 下载Java开发工具包(JDK) 访问Oracle官方网站或OpenJDK项目页面下载适合操作系统的JDK版本。Oracle JDK适用于商业用途,OpenJDK是开源版本。选择…

如何安装java

如何安装java

下载Java开发工具包(JDK) 访问Oracle官方网站或OpenJDK下载页面,选择适合操作系统的版本(Windows、macOS或Linux)。推荐下载最新的长期支持(LTS)版本,如Java…

vue怎么实现数据

vue怎么实现数据

Vue 数据实现方式 Vue 提供了多种方式来实现数据的响应式绑定和管理,核心是通过数据驱动视图的更新。 响应式数据声明 在 Vue 组件中,可以通过 data 选项声明响应式数据。这些数据会被 V…

java如何导包

java如何导包

导入包的方法 在Java中,导入包(package)可以通过import语句实现,用于引入其他类或包中的功能。以下是几种常见的导包方式: 导入单个类 import java.util.ArrayL…