菜鸟-创作你的创作

【Java】爬虫_java爬虫

下面给你一份 最实用、最完整的《Java 爬虫入门与实战指南》,包含原理、常用库、示例代码、反爬突破方法,以及你能立刻跑起来的 Java 爬虫 Demo。

非常适合刚接触 Java 爬虫或准备写项目的你。


🕷️ Java 爬虫入门与实战指南(2025 稳定版)


⭐ 一、Java 爬虫能做什么?

Java 爬虫常用于:

如果你做数据项目、NLP 情感分析、数据治理,这非常适用。


⭐ 二、Java 爬虫基础流程

爬虫核心 4 步:

  1. 发送请求(HTTP GET/POST)
  2. 获取网页内容(HTML / JSON)
  3. 解析数据(CSS / XPath / JSON)
  4. 存储数据(数据库 / 文件)

⭐ 三、常用 Java 爬虫库

功能说明
发 HTTP 请求Jsoup最适合新手,简单强大
发 HTTP 请求OkHttp性能强,企业常用
发 HTTP 请求HttpClientApache 出品
HTML解析Jsoup解析选择器最强
JSON解析Gson / fastjson2 / Jackson根据项目选择
分布式爬虫WebMagicJava 最成熟爬虫框架
浏览器模拟Selenium + ChromeDriver破解 JS 渲染页面

⭐ 四、最快速入门示例:爬单个网页(Jsoup)

📌 1)Maven 依赖

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

📌 2)Java 代码示例

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

public class SimpleCrawler {
    public static void main(String[] args) {
        try {
            // 1. 下载网页
            Document doc = Jsoup.connect("https://news.baidu.com").get();

            // 2. 按 CSS 选择器解析标题
            Elements titles = doc.select("a");

            // 3. 输出
            titles.stream().limit(10).forEach(e -> 
                System.out.println(e.text() + " → " + e.attr("href"))
            );

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

✔ 适合爬 HTML 内容
✔ 支持模拟浏览器 UA、设置 Cookie、超时等


⭐ 五、Java 爬 JSON API(OkHttp 示例)

📌 Maven 依赖

<dependency>
    <groupId>com.squareup.okhttp3</groupId>
    <artifactId>okhttp</artifactId>
    <version>4.11.0</version>
</dependency>

📌 代码示例

OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
        .url("https://api.bilibili.com/x/web-interface/ranking/v2")
        .header("User-Agent", "Mozilla/5.0")
        .build();

Response response = client.newCall(request).execute();
String json = response.body().string();
System.out.println(json);

✔ 适合爬接口、APP API、JSON 数据
✔ 支持 Headers、POST、代理、异步请求


⭐ 六、Java 分布式爬虫(WebMagic)

如果你要做“企业级爬虫项目”,推荐使用 WebMagic。

📌 Maven 依赖

<dependency>
    <groupId>us.codecraft</groupId>
    <artifactId>webmagic-core</artifactId>
    <version>0.9.1</version>
</dependency>

📌 简单 Demo

public class MySpider implements PageProcessor {

    private Site site = Site.me()
            .setRetryTimes(3)
            .setSleepTime(500)
            .setUserAgent("Mozilla/5.0");

    @Override
    public void process(Page page) {
        // 抓取标题
        page.putField("title", page.getHtml().xpath("//title/text()"));
    }

    @Override
    public Site getSite() {
        return site;
    }

    public static void main(String[] args) {
        Spider.create(new MySpider())
                .addUrl("https://www.jd.com")
                .thread(5)
                .run();
    }
}

✔ 支持调度、队列、管道
✔ 多线程高并发
✔ 分布式(Redis + WebMagic)

如果你做「数据治理 + 爬虫 + NLP」项目,非常适合用它。


⭐ 七、Java 爬虫如何突破反爬?

下面是最常见的反爬策略与对应解决方法。

网站反爬手段Java 破解方式
UA 限制自定义 User-Agent
限制 Cookie带 Cookie 请求
访问太快被封加随机延迟、代理 IP
需要登录模拟登录,维护 Session
JS 渲染页面Selenium + ChromeDriver
加密参数抓包分析 JS 代码逆向
验证码第三方平台识别(如阿里云 OCR)或手动输入

UA 示例

Jsoup.connect(url)
     .userAgent("Mozilla/5.0 Chrome/120")
     .get();

代理 IP 示例

Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("127.0.0.1", 8888));
OkHttpClient client = new OkHttpClient.Builder().proxy(proxy).build();


⭐ 八、爬虫数据入库(可直接用于你的项目)

你可以把爬到的数据存:

示例:写入 MySQL(JDBC)

Connection conn = DriverManager.getConnection(url, user, pass);
PreparedStatement ps = conn.prepareStatement("INSERT INTO news(title,url) VALUES(?,?)");
ps.setString(1, title);
ps.setString(2, link);
ps.execute();


⭐ 九、如果你需要,我还能给你:

完整的 Java 爬虫项目模板(Maven + WebMagic + MySQL)
Spring Boot + 爬虫 + NLP情感分析 一体化案例(与你的数据治理项目一致)
反爬破解专用工具代码
浏览器自动化爬取示例(Selenium)
抓包分析 + 参数加密逆向教学

退出移动版