如何使用Java爬取网站数据

1. Jsoup介绍

  • 官网文档:https://jsoup.org

  • Jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。

2. Jsoup快速入门

获取网页标题

String url = "https://search.jd.com/Search?keyword=手机&wq=手机&page=1";
Document document = Jsoup.connect(url).get();
String title = document.select("title").text();
System.out.println(title);

运行效果:手机 - 商品搜索 - 京东

3. 网站数据分析

3.1 分析网站的访问地址

以京东商城为例,商品分页列表的url地址,需要带如下几个参数,因此,在发送http请求时,需要携带正确的参数。

URL:- 商品搜索 - 京东手机&wq=手机&page=1

3.2 分析网站的页面结构

通过浏览器的开发者工具,可以分析出页面中我们需要的html结构。

  • 可以看出,我们需要的

使用 Java 爬取网站数据通常可以借助第三方库,以下介绍使用`HttpClient`和`Jsoup`两种常见方式: ### 使用 Apache HttpClient `Apache HttpClient`是 Apache 软件基金会提供的一个强大、高效的 HTTP 客户端库,可用于发送 HTTP 请求并获取响应。以下是一个简单示例: ```java import org.apache.http.HttpEntity; 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; import java.io.IOException; public class HttpClientExample { public static void main(String[] args) { CloseableHttpClient httpClient = HttpClients.createDefault(); try { // 创建 HTTP GET 请求 HttpGet httpGet = new HttpGet("https://example.com"); // 执行请求 CloseableHttpResponse response = httpClient.execute(httpGet); try { // 获取响应实体 HttpEntity entity = response.getEntity(); if (entity != null) { // 读取响应内容 String content = EntityUtils.toString(entity); System.out.println(content); } } finally { response.close(); } } catch (IOException e) { e.printStackTrace(); } finally { try { httpClient.close(); } catch (IOException e) { e.printStackTrace(); } } } } ``` ### 使用 Jsoup `Jsoup`是一个用于处理 HTML 的 Java 库,它可以从 URL、文件或字符串中提取和操作数据。以下是使用`Jsoup`的示例: ```java import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; import java.io.IOException; public class JsoupExample { public static void main(String[] args) { try { // 连接到指定 URL 并获取文档 Document doc = Jsoup.connect("https://example.com").get(); // 获取所有链接 Elements links = doc.select("a[href]"); for (Element link : links) { // 输出链接文本和 URL System.out.println("Link Text: " + link.text()); System.out.println("Link URL: " + link.attr("href")); } } catch (IOException e) { e.printStackTrace(); } } } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值