如何使用 Java 编写一个简单的网页爬取程序


如何使用 Java 编写一个简单的网页爬取程序


更多资料:各种面试资源

关于如何用Java实现网页爬取程序,能够使用的框架挺多的,简单介绍一下:

Java 爬虫的框架有哪些?

Java中常用的爬虫框架主要包括以下几种:

1、Jsoup: Jsoup是一款Java的HTML解析器,可以直接解析某个URL地址、HTML文本内容。它提供了非常便利的API,用于提取和操作数据,适用于小规模的数据抓取。

2、HttpClient: Apache HttpClient是处理HTTP请求的工具库。它支持自定义各种HTTP通讯细节,如:连接超时、代理服务器配置、提交数据等,适合与其他工具配合使用实现复杂的爬虫功能。

3、WebMagic: WebMagic是一个简单灵活的Java爬虫框架,它提供了简洁的API,可以定义抓取规则,支持多线程爬取、Json解析等功能,适合中大规模数据抓取。

4、Crawler4j: Crawler4j是一个Java编写的开源网络爬虫工具,支持多线程爬取、分布式抓取,适合于数据挖掘和搜索引擎技术。

5、Heritrix: Heritrix是由互联网档案馆开发的一款开源的网页爬虫软件,适合进行大规模的网页抓取,被广泛应用于互联网档案存储。

这些框架各有特点,适用于不同规模和复杂度的爬虫项目,选用时需根据项目需求和技术背景进行选择。

如何使用?

这里以Jsoup简单的演示一下

1、创建项目

首先创建一个Java Spring 项目或者 Spring Boot 项目,构建工具为Maven。(这里以 Spring Boot 项目为例)

2、导入maven依赖


     <dependencies>
        <dependency>
            <groupId>org.jsoupgroupId>
            <artifactId>jsoupartifactId>
            <version>1.13.1version>
        dependency>
        
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-testartifactId>
            <scope>testscope>
        dependency>
    dependencies>

3、创建测试用例

在这里我就直接在测试方法里写了,当然你也可以单独写一个工具类,传入url参数,然后直接获取,方便测试

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;


import java.io.IOException;

@SpringBootTest
class SpringbootProjectTestApplicationTests {


    @Test
    void contextLoads() {
        // 这里以爬取CSDN文章为例
        String url = "https://blog.csdn.net/Wyxl990/article/details/135156748?spm=1001.2014.3001.5502"; // 目标网址
        try {
            // 发送请求获取网页内容
            Document document = Jsoup.connect(url).get();

            // 提取文章内容
            // 假设文章内容在一个特定的ID中,例如 "article_content"
            Element article = document.getElementById("article_content");
            if (article != null) {
                System.out.println("Article Content:\n" + article.text());
            } else {
                System.out.println("No article content found.");
            }

            // 提取所有图片链接
            Elements images = article.select("img[src]");
            System.out.println("Found " + images.size() + " images.");

            // 遍历并打印每个图片的src属性
            for (Element image : images) {
                System.out.println("Image URL: " + image.attr("src"));
            }

        } catch (IOException e) {
            // 异常处理
            e.printStackTrace();
        }

    }
}

4、运行结果
运行结果如下图所示:

原网站如图所示:
地址:https://blog.csdn.net/Wyxl990/article/details/135156748?spm=1001.2014.3001.5502

图:

如何使用 Java 编写一个简单的网页爬取程序_第1张图片

测试结果如下图:
如何使用 Java 编写一个简单的网页爬取程序_第2张图片

上面如何获取文章内容和文章内的图片,我们爬取的时候还可以爬取整个页面,获取其中的所有的链接,代码如下:

@Test
    void contextLoadsTest2() {
        // 这里以爬取CSDN文章为例
        String url = "https://blog.csdn.net/Wyxl990/article/details/135156748?spm=1001.2014.3001.5502"; // 目标网址
        try {
            // 发送请求获取网页内容
            Document document = Jsoup.connect(url).get();

            // 解析并提取链接
            Elements links = document.select("a[href]");

            // 遍历每个链接
            for (Element link : links) {
                // 打印出链接的文本和URL
                System.out.println("Link Text: " + link.text());
                System.out.println("URL: " + link.attr("href"));
            }
        } catch (IOException e) {
            // 异常处理
            e.printStackTrace();
        }

    }

测试结果如下:

如何使用 Java 编写一个简单的网页爬取程序_第3张图片


5、小结

在上面的示例中,使用了Jsoup来解析CSDN文章页面。首先,它通过getElementById(“article_content”)提取文章内容。这里的ID “article_content” 是基于CSDN页面的结构;你需要根据实际页面结构调整此ID。
然后,它会从这个文章元素中提取所有标签的src属性,以获取图片链接。

请注意,使用爬虫技术之前,需要确保:

1、替换URL为目标CSDN文章的实际地址。
2、仅用于合法目的,遵守CSDN网站的使用条款和爬虫政策。
3、尊重版权和知识产权,不要用于商业目的或侵犯作者权益。
另外,请注意,网页结构可能随时更改,所以这个代码可能需要根据CSDN网站的最新结构进行调整。

求一键三连:点赞、分享、收藏
点赞对我真的非常重要!在线求赞,加个关注我会非常感激!@小郑聊编程

你可能感兴趣的:(java,爬虫,网络爬虫)