简单的 Java 爬虫示例,使用 Jsoup 和 HttpClient 获取网页内容:
首先,您需要在您的项目中添加 Jsoup 和 HttpClient 的 Maven 依赖:
<dependencies>
<!-- Jsoup -->
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.13.1</version>
</dependency>
<!-- HttpClient -->
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.12</version>
</dependency>
</dependencies>
在您的 Java 类中,您可以使用以下代码来获取页面内容:
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 org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
public class Main {
public static void main(String[] args) {
// 创建 HttpClient 实例
CloseableHttpClient httpClient = HttpClients.createDefault();
try {
// 创建 HttpGet 请求
String url = "https://stackoverflow.com/questions/57068526/how-to-calculate-time-difference-between-timestamps-in-elasticsearch-query";
HttpGet httpGet = new HttpGet(url);
// 执行请求,获取响应
String responseContent = httpClient.execute(httpGet, httpResponse -> {
// 将响应内容转换为字符串
if (httpResponse.getEntity() != null) {
return EntityUtils.toString(httpResponse.getEntity());
} else {
return null;
}
});
// 将响应内容解析为 HTML 文档
Document doc = Jsoup.parse(responseContent);
// 获取标题元素
Element titleElement = doc.selectFirst("title");
// 输出标题
System.out.println("Title: " + titleElement.text());
} catch (Exception e) {
e.printStackTrace();
} finally {
// 关闭 HttpClient 实例
try {
httpClient.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
在这个示例中,我们使用 HttpClient 来执行 HTTP GET请求,然后将响应的实体转换为字符串。接下来,我们使用 Jsoup 来解析 HTML 内容,并从中选择页面标题元素。
请注意,这个示例只是一个简单的演示,并没有考虑到对目标网站规则以及道义的尊重,我们应当遵守爬虫的道德规范,尊重网站规则,以避免触犯法律或道德红线。