爬虫爬取数据遇到302,301重定向如何获取重定向后的地址(完美解决)

这篇具有很好参考价值的文章主要介绍了爬虫爬取数据遇到302,301重定向如何获取重定向后的地址(完美解决)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

当用java或者python爬取目标网站的时候,浏览器可以正确重定向,而用编程爬取始终是code:200

只需要将请求头修改成如下,可以根据需要进行更改

  Map<String, String> headers = Map.of(
                    "Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
                    "Accept-Encoding", "gzip, deflate, sdch, br",
                    "Accept-Language", "zh-CN,zh;q=0.8",
                    "Connection", "keep-alive",
                    "Host", "www.baidu.com",
                    "Upgrade-Insecure-Requests", "1",
                    "User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36"
            );

然后就可以获取目标重定向后的地址

String redirectedUrl = connection.getHeaderField("Location");

完整java语言get请求获取重定向地址方法文章来源地址https://www.toymoban.com/news/detail-813399.html

   /**
     * 获取重定向后的地址
     * @param url
     * @return
     */
 public static String sendGetRequestWithRedirect(String url) {
        try {
            URL getUrl = new URL(url);
            HttpURLConnection connection = (HttpURLConnection) getUrl.openConnection();
            connection.setRequestMethod("GET");

            // 设置请求头,模拟浏览器行为
            // 设置自定义请求头
            Map<String, String> headers = Map.of(
                    "Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
                    "Accept-Encoding", "gzip, deflate, sdch, br",
                    "Accept-Language", "zh-CN,zh;q=0.8",
                    "Connection", "keep-alive",
                    "Upgrade-Insecure-Requests", "1",
                    "User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36"
            );

            // 添加自定义请求头
            for (Map.Entry<String, String> entry : headers.entrySet()) {
                connection.setRequestProperty(entry.getKey(), entry.getValue());
            }
            // 设置重定向处理
            connection.setInstanceFollowRedirects(false);

            int responseCode = connection.getResponseCode();
            if (responseCode == HttpURLConnection.HTTP_OK || responseCode == HttpURLConnection.HTTP_MOVED_TEMP || responseCode == HttpURLConnection.HTTP_MOVED_PERM) {
                String redirectedUrl = connection.getHeaderField("Location");

                if (redirectedUrl != null) {
                    // 重定向时获取新地址
                    return redirectedUrl;
                } else {
                    return  url;
                }
            } else {
                // 处理错误响应
                System.out.println("Error response code: " + responseCode);
                return null;
            }
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }

到了这里,关于爬虫爬取数据遇到302,301重定向如何获取重定向后的地址(完美解决)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python爬虫基础之如何对爬取到的数据进行解析

    原文地址: https://www.program-park.top/2023/04/13/reptile_2/   在上一篇博客中,讲了如何使用 urllib 库爬取网页的数据,但是根据博客流程去操作的人应该能发现,我们爬取到的数据是整个网页返回的源码,到手的数据对我们来说是又乱又多的,让我们不能快速、准确的定位到所需

    2023年04月16日
    浏览(44)
  • Nginx处理302重定向端口丢失问题

    业务部署于Linux虚拟机中,域名解析到公网ip,公网ip的非标准端口映射虚机的标准端口。由于种种原因无法使用公网标准端口(80、443),只能使用非标准端口,公网端口8050到虚机80、公网端口8051到虚机443。 虚机内部通过Nginx当做静态资源服务器,监听80、443端口,而在虚机

    2024年02月16日
    浏览(39)
  • 前端拦截302重定向踩坑之旅

    工作项目系统管理着大量作品内容,其中不乏视频资源。某天有运营反馈,在系统内使用播放器下载视频时会提示网络错误下载失败的问题: 复现时,发现该现象为偶发,并非所有视频资源均不可下载。 经过排查,发现该问题原因是:部分后端返回的视频链接失效,无法直

    2024年04月25日
    浏览(44)
  • 关于Nginx下301重定向域名的方法

    在网站建设中需要网页重定向的情况很多:如网页目录结构变动,网页重命名、网页的扩展名改变、网站域名改变等。 linux中nginx 301重定向跳转方法总结,有需要的朋友可参考一下。 第一种情况 :访问aaaaaaa站定向到bbbbbbbbbbb站 代码如下: server { server_naaaaaaame www.aaaaaaa.com ; r

    2024年02月10日
    浏览(39)
  • 记一次nignx代理重定向302状态码

    提示:这里简述项目相关背景: 项目场景:示例: nginx代理配置大致如下,上游返回请求重定/index.html 提示:这里描述项目中遇到的问题: 前端浏览器收到请求响应码为302,导致页面无法加载 这里配置的代理请求头host只取到服务器的ip,导致上游服务器返回的重定向的地址为

    2024年02月16日
    浏览(45)
  • 织梦模板DEDECMS首页301重定向的代码教程

    DEDECMS首页301重定向,将不带www的主域名定向到带www 把上边的代码加入到首页index.php中 的上边。 但请注意了:如果你的默认首页index.html排在了index.php上面,那么以上方法就不管用了。 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持yii666。

    2024年02月02日
    浏览(42)
  • 301 Moved Permanently:了解HTTP永久重定向错误码

    HTTP错误码的作用和分类 HTTP错误码是指在进行HTTP通信时,服务器返回给客户端的状态码。它们用于表示请求的处理结果,以便客户端能够根据不同的状态码做出相应的处理。HTTP错误码分为5类,分别以不同的数字开头,如1xx表示信息响应,2xx表示成功响应,3xx表示重定向,

    2024年02月08日
    浏览(49)
  • dedeCSM织梦模板添加301重定向跳转网址对的代码教程

    dedeCSM织梦模板添加301重定向跳转网址对的代码教程 dede5.7的程序中有自带的index.php 一般是这样: 实现301重定向   用下面代码替换原有的index.php内容: 可以直接复制上面的代码内容到dede5.7的根目录下的index.php中,把以前的源代码覆盖。 如何查看你的301重定向是否添加成功

    2024年02月02日
    浏览(67)
  • python爬虫-获取某某在线翻译的查询结果,爬取json文件并解析

    url,请求方式,请求格式,都在此请求的header中 (此内容浏览器不同显示内容应该也是一样的,我用的edge浏览器,我也试过chrom浏览器,效果一样) ctrl + b进入方法体内即可 解读response.text,这是一个包含Unicode字符的JSON字符串编码 也许我们需要翻译一下 将API接口返回的JS

    2024年02月06日
    浏览(43)
  • 解决前后端分离Vue项目部署到服务器后出现的302重定向问题

    最近发现自己开发的vue前后端分离项目因为使用了spring security 安全框架,即使在登录认证成功之后再调用一些正常的接口总是会莫名奇妙地出现302重定向的问题,导致接口数据出不来。奇怪的是这个问题在本地开发环境并没有,而是部署到了服务器之后才会有。 接口无法加

    2024年02月13日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包