当前位置:首页 > 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如何做弹窗

react如何做弹窗

使用 React 创建弹窗的方法 使用 React 内置状态管理 通过 React 的 useState 钩子控制弹窗的显示与隐藏,结合条件渲染实现弹窗效果。 import { useSta…

react如何做步骤引导

react如何做步骤引导

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

react 如何做下拉菜单

react 如何做下拉菜单

使用 React 创建下拉菜单 基础实现(原生 HTML + React 状态) import { useState } from 'react'; function Dropdown() {…

react 如何做响应式布局官网

react 如何做响应式布局官网

使用 CSS Flexbox 或 Grid 布局 Flexbox 和 Grid 是 CSS 提供的现代布局方案,能够轻松实现响应式设计。Flexbox 适合一维布局(行或列),Grid 适合二维布局(…

react中的滚动条如何做

react中的滚动条如何做

自定义滚动条样式 在React中,可以通过CSS直接修改滚动条的样式。使用::-webkit-scrollbar系列伪元素选择器来定制滚动条外观。这种方法仅适用于WebKit内核浏览器(如Chrome…

java如何做接口

java如何做接口

接口的定义与实现 在Java中,接口(Interface)是一种抽象类型,用于定义一组方法规范而不提供具体实现。接口通过interface关键字声明,类通过implements关键字实现接口。 //…