当前位置:首页 > Java

java如何做爬虫

2026-03-04 08:46:04Java

使用Jsoup进行简单网页爬取

Jsoup是一个Java库,用于处理HTML文档并从中提取数据。它提供简单的API用于URL抓取和数据解析。

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 {
        Document doc = Jsoup.connect("https://example.com").get();
        Elements links = doc.select("a[href]");

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

使用HttpClient进行更复杂请求

Apache HttpClient更适合处理需要自定义头信息、Cookie管理和POST请求的场景。

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);
        }
    }
}

处理动态加载内容

对于JavaScript动态生成的内容,需要使用无头浏览器如Selenium WebDriver。

java如何做爬虫

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");
        String pageSource = driver.getPageSource();
        System.out.println(pageSource);

        driver.quit();
    }
}

数据存储与处理

爬取的数据通常需要存储到数据库或文件中。

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

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

遵守robots.txt协议

在爬取前检查目标网站的robots.txt文件,尊重网站的爬取规则。

java如何做爬虫

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;

public class RobotsChecker {
    public static void main(String[] args) throws Exception {
        Document robots = Jsoup.connect("https://example.com/robots.txt").get();
        System.out.println(robots.text());
    }
}

处理反爬机制

常见反爬措施包括IP限制、验证码和User-Agent检测。

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;

public class AntiCrawler {
    public static void main(String[] args) throws Exception {
        Document doc = Jsoup.connect("https://example.com")
            .userAgent("Mozilla/5.0")
            .timeout(5000)
            .cookie("auth", "token")
            .get();
    }
}

使用代理IP

当遇到IP限制时,可以使用代理服务器。

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;

public class ProxyExample {
    public static void main(String[] args) throws Exception {
        System.setProperty("http.proxyHost", "proxy.example.com");
        System.setProperty("http.proxyPort", "8080");

        Document doc = Jsoup.connect("https://example.com").get();
    }
}

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

相关文章

react如何做title

react如何做title

如何在React中动态设置页面标题 使用React Helmet库可以轻松管理文档头部标签 安装依赖包npm install react-helmet或yarn add react-helmet 在组…

react icon 如何做

react icon 如何做

在 React 中使用图标的方法 安装图标库 React 项目可以通过流行的图标库(如 react-icons)快速集成图标。运行以下命令安装: npm install react-icons…

react中如何做跳转

react中如何做跳转

使用 React Router 进行跳转 React Router 是 React 生态中最常用的路由管理库,支持页面跳转和动态路由。以下是几种常见的跳转方式: 安装 React Router n…

react如何做toast提示

react如何做toast提示

使用 react-hot-toast 库 安装 react-hot-toast 库: npm install react-hot-toast 在应用的根组件中引入 Toaster 组件: im…

react如何做步骤引导

react如何做步骤引导

使用引导组件库 在React中实现步骤引导,可以借助现成的组件库如react-joyride或intro.js-react。这些库提供了开箱即用的功能,包括高亮元素、步骤提示和导航控制。 安装re…

react里如何做动态加载

react里如何做动态加载

动态加载的实现方法 在React中实现动态加载(懒加载)通常使用React.lazy和Suspense组合,或借助第三方库如loadable-components。以下是具体实现方式: 使用Reac…