当前位置:首页 > Java

java如何写爬虫

2026-03-04 09:23:44Java

Java 爬虫实现方法

使用 Jsoup 库

Jsoup 是一个轻量级的 HTML 解析库,适合简单的爬虫需求。

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

public class JsoupExample {
    public static void main(String[] args) throws Exception {
        String url = "https://example.com";
        Document doc = Jsoup.connect(url).get();
        Elements links = doc.select("a[href]");

        for (Element link : links) {
            System.out.println(link.attr("abs:href"));
        }
    }
}

使用 HttpClient

Apache HttpClient 更适合处理复杂的 HTTP 请求。

java如何写爬虫

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) throws Exception {
        CloseableHttpClient httpClient = HttpClients.createDefault();
        HttpGet request = new HttpGet("https://example.com");

        try (CloseableHttpResponse response = httpClient.execute(request)) {
            String html = EntityUtils.toString(response.getEntity());
            System.out.println(html);
        }
    }
}

使用 Selenium

对于需要处理 JavaScript 渲染的页面,Selenium 是更好的选择。

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

public class SeleniumExample {
    public static void main(String[] args) {
        System.setProperty("webdriver.chrome.driver", "path/to/chromedriver");
        WebDriver driver = new ChromeDriver();

        driver.get("https://example.com");
        System.out.println(driver.getPageSource());

        driver.quit();
    }
}

数据存储

爬取的数据可以存储到文件或数据库中。

java如何写爬虫

import java.io.FileWriter;
import java.io.IOException;

public class FileStorageExample {
    public static void saveToFile(String content, String filename) throws IOException {
        try (FileWriter writer = new FileWriter(filename)) {
            writer.write(content);
        }
    }
}

处理反爬机制

应对常见的反爬措施需要额外处理。

// 设置用户代理
HttpGet request = new HttpGet("https://example.com");
request.setHeader("User-Agent", "Mozilla/5.0");

// 使用代理
HttpHost proxy = new HttpHost("proxy.example.com", 8080);
RequestConfig config = RequestConfig.custom().setProxy(proxy).build();
request.setConfig(config);

多线程爬取

提高爬取效率可以使用多线程。

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class MultiThreadCrawler {
    public static void main(String[] args) {
        ExecutorService executor = Executors.newFixedThreadPool(5);

        for (int i = 0; i < 10; i++) {
            executor.execute(new CrawlTask("https://example.com/page" + i));
        }

        executor.shutdown();
    }
}

class CrawlTask implements Runnable {
    private String url;

    public CrawlTask(String url) {
        this.url = url;
    }

    @Override
    public void run() {
        // 实现爬取逻辑
    }
}

以上方法涵盖了从简单到复杂的 Java 爬虫实现方案,可根据具体需求选择合适的技术组合。注意遵守目标网站的 robots.txt 协议和相关法律法规。

标签: 爬虫如何写
分享给朋友:

相关文章

如何写react 组件

如何写react 组件

创建 React 组件的基本方法 React 组件可以通过函数式组件或类组件两种方式创建。以下是具体实现方法: 函数式组件 函数式组件是当前推荐的方式,简洁且支持 Hooks。 impor…

react如何写tabs路由

react如何写tabs路由

实现React中的Tabs路由 使用React Router结合Tabs组件可以创建导航式的标签页路由。以下是实现方法: 安装依赖包 确保项目已安装react-router-dom和必要的UI库(如…

react中如何写proxy

react中如何写proxy

在React中配置代理(Proxy)通常用于解决开发环境下的跨域问题,或转发API请求到后端服务器。以下是几种常见实现方式: 使用package.json配置 在React项目的package.js…

react如何写小程序

react如何写小程序

React 开发小程序的方法 React 本身是为 Web 应用设计的,但可以通过以下方式开发小程序: 使用 Taro 框架 Taro 是一个多端统一开发框架,支持使用 React 语法开发小程序(…

react中table判断如何写

react中table判断如何写

判断表格数据为空 在React中判断表格数据是否为空,可以通过检查数据数组的长度来实现。当数据为空时显示提示信息或占位符。 {data.length === 0 ? ( <div>暂…

react中如何写原生js

react中如何写原生js

在 React 中编写原生 JavaScript 可以通过以下几种方式实现,具体取决于使用场景和需求: 直接操作 DOM React 推荐使用虚拟 DOM 进行更新,但在某些情况下需要直接操作真实…