2025年java爬虫步骤(java爬虫代码示例)

java爬虫步骤(java爬虫代码示例)1 使用 Java IO 方式爬虫 当使用 Java IO 进行爬虫时 我们需要先获取网页的内容 然后可以使用 Java IO 类来处理和解析这些内容 下面是一个使用 Java IO 进行简单爬虫的示例代码 import java io BufferedRead import java io IOException import java io InputStreamR import

大家好,我是讯享网,很高兴认识大家。



1.使用Java IO方式爬虫:

当使用Java IO进行爬虫时,我们需要先获取网页的内容,然后可以使用Java IO类来处理和解析这些内容。下面是一个使用Java IO进行简单爬虫的示例代码:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;


public class SimpleWebCrawler {
    public static void main(String[] args) {
        try {
            // 创建URL对象
            URL url = new URL(“https://example.com");
            
            // 打开连接并创建输入流
            BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream()));
            
            String line;
            StringBuilder content = new StringBuilder();
            
            // 逐行读取网页内容并保存到StringBuilder中
            while ((line = reader.readLine()) != null) {
                content.append(line);
            }
            
            // 关闭输入流
            reader.close();
            
            // 打印网页内容
            System.out.println(content.toString());
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
在这个示例中,我们创建了一个URL对象,并通过openStream方法打开与该URL的连接。然后,我们使用BufferedReader类逐行读取网页内容,并将每一行添加到StringBuilder中。最后,我们关闭输入流,并将保存在StringBuilder中的内容打印出来。


























2.使用Jsoup方式爬虫:

首先,你需要在你的项目中添加Jsoup库的依赖。你可以通过在Maven或Gradle配置文件中添加以下依赖来获取Jsoup

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




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 {
            // 发送HTTP GET请求并获取网页内容
            Document document = Jsoup.connect(”http://example.com").get();



            // 获取网页标题
            String title = document.title();
            System.out.println(“网页标题:” + title);

            // 获取所有的链接
            Elements links = document.select(“a[href]”);
            System.out.println(“链接数量:” + links.size());

            // 打印每个链接的文本和URL
            for (Element link : links) {
                String linkText = link.text();
                String linkUrl = link.attr(“href”);
                System.out.println(“链接文本:” + linkText);
                System.out.println(“链接URL:” + linkUrl);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}










上述代码示例使用Jsoup库发送HTTP GET请求,并通过Jsoup.connect(“http://example.com”).get()方法获取网页的Document对象。然后,你可以使用该对象来提取网页中的各种元素和数据。

示例中演示了获取网页标题和所有链接的操作。通过使用document.title()方法可以获取网页的标题。使用document.select(“a[href]”)方法可以选择所有的 “a”标签,并使用links.size()获取链接数量。最后,使用一个循环遍历每个链接,并通过link.text()获取链接的文本,通过link.attr(“href”)获取链接的URL。

使用Jsoup进行网页爬取时,你可以根据需要选择和提取特定的HTML元素、属性或文本内容。Jsoup提供了丰富的选择器和方法来操作和处理HTML,使得爬取和解析网页变得更加便捷。

3.使用Selenium方式爬虫:

首先,你需要确保已经配置好Selenium和相应的浏览器驱动程序(例如ChromeDriver)。然后,可以按照以下代码示例使用Java Selenium:

public class SeleniumWebCrawler {
    public static void main(String[] args) {
        // 设置浏览器驱动路径
        System.setProperty(“webdriver.chrome.driver”, “path/to/chromedriver”);


        // 创建ChromeDriver对象
        WebDriver driver = new ChromeDriver();
        
        try {
            // 打开目标网页
            driver.get(“https://example.com");
            
            // 获取网页源代码
            String pageSource = driver.getPageSource();
            
            // 打印网页源代码
            System.out.println(pageSource);
        } finally {
            // 关闭浏览器驱动
            driver.quit();
        }
    }
}
















在这个示例中,我们使用ChromeDriver作为浏览器驱动。你需要根据你使用的浏览器和操作系统配置正确的驱动路径。

在代码中,我们创建了一个ChromeDriver对象,并使用get方法打开目标网页。然后,我们可以使用getPageSource方法获取网页的源代码,并将其打印出来。最后,我们使用quit方法关闭浏览器驱动。

4.使用Apache HttpClient方式爬虫:

Apache HttpClient是一个功能强大的HTTP客户端库,可以用于发送HTTP请求和接收响应。您可以使用它来实现基于HTTP协议的爬虫,包括处理Cookie、重定向、身份验证等。

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;



public class HttpClientExample {
    public static void main(String[] args) {
        // 创建HttpClient实例
        CloseableHttpClient httpClient = HttpClients.createDefault();


        try {
            // 发送请求并获取响应
            CloseableHttpResponse response = httpClient.execute(httpGet);

            if (statusCode == 200) {
                // 读取响应内容
                String responseBody = EntityUtils.toString(response.getEntity());
                System.out.println(responseBody);
            } else {
                System.out.println(“请求失败,状态码:” + statusCode);
            }






讯享网

            // 关闭响应对象
            response.close();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                // 关闭HttpClient实例
                httpClient.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
}
 













请注意,此示例仅用于演示如何使用Apache HttpClient进行基本的网页爬取。在实际的爬虫项目中,你可能需要处理更多的请求参数、请求头、Cookie管理等。

5.使用HtmlUnit爬虫:

public class HtmlUnitSpider {
    public static void main(String[] args) {
        try (final WebClient webClient = new WebClient()) {
            // 启用JavaScript支持
            webClient.getOptions().setJavaScriptEnabled(true);
            
            // 禁用Css渲染
            webClient.getOptions().setCssEnabled(false);
            
            // 获取网页
            HtmlPage page = webClient.getPage(“https://example.com");
            
            // 打印网页内容
            System.out.println(page.asXml());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
 


















在上面的示例代码中,我们创建了一个WebClient对象,它代表了一个模拟的浏览器。我们可以通过设置WebClient的选项来控制爬虫行为,例如启用JavaScript支持和禁用Css渲染。

然后,我们使用getPage方法来获取指定网页的HtmlPage对象。你可以将你要爬取的网页URL替换为”https://example.com"。

最后,我们通过调用asXml方法将网页内容以XML格式输出到控制台。你也可以使用asText方法获取纯文本内容。

请注意,HtmlUnit是一个强大的工具,可以模拟用户在浏览器中的操作,但它的运行需要一些依赖库。你需要将HtmlUnit的相关jar文件添加到你的项目中。

6.使用WebMagic方式爬虫:

首先,你需要在你的项目中引入WebMagic的依赖。你可以在项目的构建文件(如pom.xml)中添加以下内容:

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



import us.codecraft.webmagic.*;
import us.codecraft.webmagic.processor.PageProcessor;
import us.codecraft.webmagic.scheduler.QueueScheduler;
import us.codecraft.webmagic.scheduler.Scheduler;


public class WebMagicSpider implements PageProcessor {

    private Site site;

    public WebMagicSpider() {
        // 配置爬虫的User-Agent和其他参数
        site = Site.me()
                .setUserAgent(“Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36”)
                .setRetryTimes(3)
                .setSleepTime(1000);
    }





    @Override
    public void process(Page page) {
        // 解析网页,提取需要的数据
        String title = page.getHtml().xpath(“//title/text()”).get();
        System.out.println(“Title: ” + title);
        
        // 如果需要爬取其他页面,可以添加新的链接到Scheduler中
        // page.addTargetRequest(“https://example.com/other-page");
    }







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


    public static void main(String[] args) {
        // 创建爬虫
        Spider spider = Spider.create(new WebMagicSpider())
                .addUrl(”https://example.com")
                .thread(5)
                .setScheduler(new QueueScheduler());




        // 运行爬虫
        spider.run();
    }
}
 



在上面的示例代码中,我们实现了PageProcessor接口,它定义了解析网页和提取数据的方法。

在WebMagicSpider类的构造函数中,我们配置了爬虫的参数,如User-Agent、重试次数和请求间隔等。

在process方法中,我们使用XPath表达式从网页中提取了标题,并将其打印到控制台。你可以根据需要编写自己的解析逻辑。

在main方法中,我们创建了一个Spider对象,并设置了要爬取的起始URL、线程数和调度器。最后,调用run方法运行爬虫。

你可以根据自己的需求,通过调用addUrl方法添加更多的URL到爬虫的抓取队列中。

请注意,WebMagic还提供了其他功能,如自动提取链接、持久化数据等。你可以根据官方文档了解更多关于WebMagic的用法和功能。

小讯
上一篇 2025-05-04 12:04
下一篇 2025-06-06 21:41

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/197323.html