JSoup 爬虫遇到的 404 错误解决方案

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
简介: JSoup 爬虫遇到的 404 错误解决方案

亿牛云 (4).png

在网络爬虫开发中,使用JSoup进行数据抓取是一种常见的方式。然而,当我们尝试使用JSoup来爬虫抓取腾讯新闻网站时,可能会遇到404错误。这种情况可能是由于网站的反面爬虫机制检测到了我们的爬虫行为,从而拒绝了我们的请求。
假设我们希望使用JSoup来爬取腾讯新闻的数据,但在实际操作中,我们却遇到404错误。这可能是因为腾讯新闻网站采取了一些反爬虫措施,例如检测请求头中的用户- Agent信息或者Referer信息,以识别爬虫行为并拒绝请求并返回404错误信息。如下所示:

```import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import java.io.IOException;

public class TencentNewsCrawler {
public static void main(String[] args) {
String url = "http://news.qq.com/not_existing_page"; // 不存在的页面

    try {
        Document document = Jsoup.connect(url).get();
        System.out.println(document.outerHtml());
    } catch (IOException e) {
        System.out.println("Error fetching the page: " + e.getMessage());
        if (e.getMessage().contains("404")) {
            System.out.println("Encountered 404 error - Page not found");
        }
    }
}

}


为了解决这个问题,我们可以采取以下几种方法:
1. 设置合适的请求头:请求头中包含了关于客户端环境和请求的信息,通过设置合适的请求头,我们可以让服务器认为请求来自标准浏览器,从而避免被拒绝或返回404错误。
2. 模拟浏览器的请求:通过设置合适的User-Agent来模拟浏览器的请求,让服务器认为请求来自标准浏览器,从而避免被拒绝或返回404错误。
3. 设置Referer信息:有些网站会要求客户端提供特定的Referer信息,即来源页面的URL。通过设置请求头中的Referer字段来模拟请求来源页面的URL,有助于避免被服务器或拒绝返回404错误。
4. 使用代理服务器:通过使用代理服务器,我们可以隐藏爬虫的真实IP地址,从而降低被网站识别为爬虫的概率。JSoup提供了设置代理的方法,不知道如何设置的可以参考这里https://www.16yun.cn/help/ss_demo/#4java
通过以上方法,我们可以有效地解决 JSoup 爬虫遇到的 404 错误问题,确保爬虫能够正常地获取所需的数据,完整的实现代码示例如下:
```import org.jsoup.Connection;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;

import java.io.IOException;

public class JsoupCrawlerWithProxy {
    public static void main(String[] args) {
        String url = "https://example.com"; // 替换为目标网站的URL
        String proxyHost = "www.16yun.cn";
        String proxyPort = "5445";
        String proxyUser = "16QMSOML";
        String proxyPass = "280651";

        try {
            // 设置合适的User-Agent和Referer,并使用代理服务器
            Connection connection = Jsoup.connect(url)
                    .userAgent("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3")
                    .referrer("https://www.google.com")
                    .proxy(proxyHost, Integer.parseInt(proxyPort))
                    .header("Proxy-Authorization", "Basic " + encodeProxyCredentials(proxyUser, proxyPass));

            // 发起请求
            Document document = connection.get();

            // 处理返回的HTML文档
            System.out.println(document.title());
            // 其他处理逻辑...

        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    // 编码代理服务器的用户名和密码
    private static String encodeProxyCredentials(String username, String password) {
        String credentials = username + ":" + password;
        return java.util.Base64.getEncoder().encodeToString(credentials.getBytes());
    }
}
相关文章
|
数据采集 网络协议 Java
Java爬虫框架下代理使用中的TCP连接池问题及解决方案
Java爬虫框架下代理使用中的TCP连接池问题及解决方案
|
2月前
|
数据采集 存储 前端开发
Java爬虫开发:Jsoup库在图片URL提取中的实战应用
Java爬虫开发:Jsoup库在图片URL提取中的实战应用
|
3月前
|
数据采集
爬虫抓取数据过程中代理IP频繁掉线:以Kookeey为例的解决方案
在数据抓取过程中,代理IP不可或缺,但其频繁掉线问题严重影响效率。本文以Kookeey为例,探讨解决之道:1)深入理解掉线原因,审慎选择稳定的服务商; 2)保持代理IP更新并合理配置使用参数; 3)在程序中集成错误处理与重试逻辑; 4)必要时升级至更优质的服务; 5)主动与服务商沟通寻求支持; 6)探索替代抓取策略,如调整抓取节奏或采用分布式架构。这些措施有助于显著提升抓取成功率及稳定性。
|
4月前
|
数据采集 前端开发 JavaScript
Jsoup爬虫
下面是提供的内容摘要,已压缩至240个字符以内,并采用了Markdown格式: ## 爬虫技术与 Jsoup 实践 1. **爬虫技术** - 自动化程序访问网页并提取数据。 - 用于数据分析、搜索引擎索引等。 2. **了解Jsoup** - Java HTML解析器。 - 支持DOM, CSS选择器及jQuery风格操作。 3. **Java代码实操** - [项目下载](https://pan.baidu.com/s/1u176Wf0BJrL6HeD39saG3Q?pwd=y9eq) 提取码: `y9eq`. - 运行`JsoupDem
|
4月前
|
数据采集 前端开发
使用Jsoup爬虫
当访问网站如小说站点并使用F12或右键检查功能时,可见大量前端代码,即网页源代码。需爬取特定信息时,通过检查元素(Elements)定位所需数据位置。爬虫工作即精准截取这些代码中的目标信息,忽略无关部分。此过程涉及解析HTML结构,提取所需数据片段。
|
数据采集 JSON JavaScript
jsoup爬虫发送get、post请求、解析html、获取json
jsoup爬虫发送get、post请求、解析html、获取json
718 0
|
数据采集 Web App开发 存储
Java爬虫第五篇:使用selenium、Jsoup 抓取bing搜索图片
Java爬虫第五篇:使用selenium、Jsoup 抓取bing搜索图片
296 0
|
数据采集 Web App开发 存储
Java爬虫第四篇:使用selenium、Jsoup 抓取图片
Java爬虫第四篇:使用selenium、Jsoup 抓取图片
526 0
|
6月前
|
存储 数据采集 JSON
Scrapy爬虫数据存储为JSON文件的解决方案
Scrapy爬虫数据存储为JSON文件的解决方案
|
数据采集 Web App开发 运维
spider 网页爬虫中的 AWS 实例数据获取问题及解决方案
spider 网页爬虫中的 AWS 实例数据获取问题及解决方案