下面给你一份 最实用、最完整的《Java 爬虫入门与实战指南》,包含原理、常用库、示例代码、反爬突破方法,以及你能立刻跑起来的 Java 爬虫 Demo。
非常适合刚接触 Java 爬虫或准备写项目的你。
🕷️ Java 爬虫入门与实战指南(2025 稳定版)
⭐ 一、Java 爬虫能做什么?
Java 爬虫常用于:
- 采集网页数据(新闻、商品、评论)
- 调用接口爬 JSON 数据
- 实现大规模多线程爬取
- 企业级爬虫(分布式、调度、入库)
如果你做数据项目、NLP 情感分析、数据治理,这非常适用。
⭐ 二、Java 爬虫基础流程
爬虫核心 4 步:
- 发送请求(HTTP GET/POST)
- 获取网页内容(HTML / JSON)
- 解析数据(CSS / XPath / JSON)
- 存储数据(数据库 / 文件)
⭐ 三、常用 Java 爬虫库
| 功能 | 库 | 说明 |
|---|---|---|
| 发 HTTP 请求 | Jsoup | 最适合新手,简单强大 |
| 发 HTTP 请求 | OkHttp | 性能强,企业常用 |
| 发 HTTP 请求 | HttpClient | Apache 出品 |
| HTML解析 | Jsoup | 解析选择器最强 |
| JSON解析 | Gson / fastjson2 / Jackson | 根据项目选择 |
| 分布式爬虫 | WebMagic | Java 最成熟爬虫框架 |
| 浏览器模拟 | 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(Spring Boot 直接用)
- MongoDB
- CSV/Excel
- Elasticsearch
- Redis 缓存
示例:写入 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)
✔ 抓包分析 + 参数加密逆向教学
发表回复