首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Jsoup动态post链接不遵循重定向

Jsoup是一个Java库,用于解析HTML文档、处理DOM操作和网络爬虫。它提供了一种简单而灵活的方式来从网页中提取数据。

在Jsoup中,动态post链接不遵循重定向是指在使用Jsoup发送POST请求时,如果服务器返回的响应中包含重定向信息,Jsoup默认不会自动跟随重定向。

要解决这个问题,可以通过以下步骤来实现动态post链接的重定向:

  1. 创建一个Connection对象:使用Jsoup的connect()方法创建一个Connection对象,并指定要发送POST请求的URL。
  2. 设置请求参数:使用Connection对象的data()方法设置POST请求的参数。可以使用key-value的形式设置参数。
  3. 设置请求头:使用Connection对象的header()方法设置请求头信息。根据需要设置合适的请求头,如User-Agent、Referer等。
  4. 发送POST请求:使用Connection对象的method()方法设置请求方法为POST,并调用execute()方法发送请求。
  5. 处理重定向:在执行execute()方法后,可以通过Connection对象的response()方法获取服务器返回的响应。如果响应中包含重定向信息,可以通过response()方法的statusCode()和header()方法获取重定向的状态码和重定向的URL。
  6. 跟随重定向:如果响应中包含重定向信息,可以通过Connection对象的followRedirects()方法将其设置为true,以跟随重定向。

下面是一个示例代码:

代码语言:java
复制
import org.jsoup.Connection;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;

public class JsoupPostRedirectExample {
    public static void main(String[] args) throws Exception {
        String url = "http://example.com/post";
        
        Connection.Response response = Jsoup.connect(url)
                .data("param1", "value1")
                .data("param2", "value2")
                .header("User-Agent", "Mozilla/5.0")
                .header("Referer", "http://example.com")
                .method(Connection.Method.POST)
                .execute();
        
        int statusCode = response.statusCode();
        String redirectUrl = response.header("Location");
        
        if (statusCode == 302 && redirectUrl != null) {
            Document redirectedPage = Jsoup.connect(redirectUrl)
                    .followRedirects(true)
                    .get();
            
            // 处理重定向后的页面
            System.out.println(redirectedPage);
        }
    }
}

在这个示例中,我们首先创建一个Connection对象,并设置POST请求的URL、参数和请求头。然后发送POST请求,并获取服务器返回的响应。如果响应中包含重定向信息,我们可以通过statusCode()方法获取状态码,通过header()方法获取重定向的URL。最后,我们可以使用followRedirects()方法将重定向设置为true,并使用get()方法获取重定向后的页面。

这是一个基本的处理动态post链接不遵循重定向的示例,你可以根据具体的需求进行适当的修改和扩展。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

爬虫结合自动化实战,帮助小姐姐刷抖音完全解放掉双手

shareElement = findViewByID(ID_SHARE);   //模拟点击操作 performViewClick(shareElement); 需要注意的是,分享对话框首次展示时,复制视频链接的按钮不可见...因此,需要在分享对话框界面底部 左滑,直到复制视频链接的按钮可见 接着执行点击操作,将当前视频的地址复制到系统剪切板 //DouYinService.java //向左滑动到复制按钮可见 while...使用 Jsoup 模拟上面的操作,连接视频的分享地址,获取视频重定向后的 URL 地址 import org.jsoup.Connection; import org.jsoup.Jsoup; /.../获取重定向的url url = Jsoup.connect(url)       .followRedirects(true)       .execute().url().toExternalForm...(); 分析发现,重定向后的地址包含了 视频的 ID 并且,下面发送的这个请求参数中恰好包含视频 ID,返回结果中包含了视频的时长等信息 因此,我们只需要从地址中过滤出视频 ID,然后模拟上面的请求即可

1.5K11

Android使用OkHttp进行重定向拦截处理的方法

网上有很多的OkHttp的教程,但是并没有一个是关于如何OkHttp处理重定向的。...这里的处理重定向的意思是:把重定向请求拦截下来,然后我们自己去请求重定向后的网页,然后通过Jsoup解析自己需要的网页数据。比如说我们模拟用户登录,然后自己去请求解析登陆后跳转的网页的内容。...明白了浏览器的行为之后,我们知道需要做的步骤就是4步: 自己做POST请求,并且不让它自动重定向 我们拿到POST请求返回来的响应,获取对应的Set-Cookie字段的内容 将该对应的内容添加到GET请求的...Cookie请求头字段中,然后做GET请求 获取到的GET请求的响应体就是我们登陆后的网页内容了,如果是静态网页可以通过Jsoup解析自己想要的信息了 我们需要通过抓包或者Chorme浏览器自带的请求查看功能来查看...POST请求提交的表单是怎样的。

2.2K41

爬虫入门(Java)

} catch (IOException e) { e.printStackTrace(); } } } } post...请求 HttpPost httpPost = new HttpPost("https://www.csdn.net/"); 带参数的post请求 因为post请求不能用uri传递参赛,查找api,可以使用...查询的 连接池 HttpClient相当于一个浏览器,平时我们请求完链接后,并不需要关闭浏览器,相当于数据库操作,没不需要每次都关闭,数据库有连接池的概念,那么HttpClient工具也是有这个概念的。...我看了一下京东这两家店铺,感觉很有意思,但是尝试爬了一下,jd页面数据绝大多数是通过Ajax请求获取的,我用浏览器调试工具(F12),发现这些Ajax很负责,并且多关键数据做了些混淆,就是直接去请求Ajax链接返回的数据还需要通过特定...一直被卡住了,最后通过一个HttpUnit(带JS解析器,可以爬取动态页面),最后就把这个小Demo解决了。

1.3K20

Java爬虫系列三:使用Jsoup解析HTML「建议收藏」

有请第二步的主角:Jsoup粉墨登场。下面我们把舞台交给Jsoup,让他完成本文剩下的内容。...按下浏览器的F12,查看页面元素源码,你会发现列表是一个大的div,id=”post_list”,每篇文章是小的div,class=”post_item” 接下来就可以开始代码了,Jsoup核心代码如下...//像js一样,通过id 获取文章列表元素对象 Element postList = document.getElementById("post_list...对于元素中的属性,比如超链接地址,可以使用element.attr(String)方法获取, 对于元素的文本内容通过element.text()方法获取。...HttpClientUtils.closeQuietly(httpClient); } } } View Code 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/120889.html原文链接

1.4K20

让我教你怎么做个人_如何制作app平台

没有服务端 jsoup 我无意听到大牛同事说到解析html,比较有兴趣去搜索这是什么玩意儿,知道了一个强大的东西jsoupjsoup能解析html,即网站,于是我的微言脱离了单机版。...题外 可能您担心,jsoup解析html,这样爬虫难道侵权吗?是的,我也担心,所以我的app也只在我的群里“宣传宣传”。...6、QQ群 如果您直接群里发app的下载链接,只会一个结果:被T。...本站仅提供信息存储空间服务,拥有所有权,承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。...发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/179444.html原文链接:https://javaforall.cn

1.2K20

Android利用爬虫实现模拟登录的实现实例

一开始选择的是htmlunit解析登录界面html,在pc上测的能实现,结果在android上运行起来,因为htmlunit利用了javax中的类实现的解析,android不支持javax,所以就跑起来...ok.click(); }catch(Exception e){ System.out.println(e.toString()); } } } 于是接着调研,发现利用jsoup...可以在android运行起来,不过这个库能抓取网页中的内容,也能进行赋值操作,但不支持模拟点击事件,网上有好多例子,是利用第一次访问获取cookie,然后把账号密码再给Post到服务器,完成模拟登陆。...可以我们的校网竟然没有使用cookie,于是我只能抓包看看post的data有什么,然后把data直接通过post发送,不过不知道我们校网密码的加密的方式,所以填写密码需要先去抓包,抓到自己账号的密文,...上面的map数据.cookies(rs.cookies()) Response login=con2.ignoreContentType(true).method(Method.POST).data

1.3K31

模拟登陆CSDN——就是这么简单「建议收藏」

使用的工具是HttpClient+Jsoup 当中HttpClient主要是负责发送请求,而Jsoup主要是解析HTML 你可能对HttpClient的API不太了解,只是没关系。...往下看就好了~ Jsoup的语法类似jQuery的选择器。相信有一定web基础的人都能够非常快的掌握 当中select(String selector)就是最强大的选择器。...对~这个就跟javascript的方法类似了~ 所以Jsoup对于开发WEB的朋友的学习成本是相当的低的!那么,继续吧骚年!...并从登陆页面上得到三个请求參数 2、用从1中得到的请求參数和账号password模拟发送post请求到登陆请求地址 3、最后分析post返回的结果推断登陆是否成功 有了思路之后...别的可能还会涉及到SSL等各种技术、有兴趣的朋友能够试试 若有问题,欢迎大家指正~ 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/115318.html原文链接

43630

Jsoup介绍及解析常用方法

选择器来查找、取出数据; 可操作HTML元素、属性、文本; jsoup解析 Jsoup提供一系列的静态解析方法生成Document对象 static Document parse(File...) 传递请求参数 Connection data(String... keyvals) 传递请求参数 Document get() 以get方式发送请求并对返回结果进行解析 Document post...()以post方式发送请求并对返回结果进行解析 Connection userAgent(String userAgent) Connection header(String name, String...表示只包含一个 input 的表单 :has(seletor) div:has(p) 表示包含了 p 元素的 div :not(selector) div:not(.logo) 表示包含...class=logo 元素的所有 div 列表 :contains(text) 包含某文本的元素,区分大小写,例如 p:contains(oschina) :containsOwn(

1.6K20

Jsoup(一)Jsoup详解(官方)

", "Java") .userAgent("Mozilla") .cookie("auth", "token") .timeout(3000) .post();         这个方法只支持...这个方法适用于如果被解析文件位于网站的本地文件系统,     且相关链接也指向该文件系统。...标签的Form元素       :has(seletor): 查找匹配选择器包含元素的元素,比如:div:has(p)表示哪些div包含了p元素       :not(selector): 查找与选择器匹配的元素...,比如: div:not(.logo) 表示包含 class="logo" 元素的所有 div 列表       :contains(text): 查找包含给定文本的元素,搜索区分大不写,比如: p...4.5、实例程序:获取所有连链接   1)说明     这个示例程序将展示如何从一个URL获得一个页面。然后提取页面中的所有链接、图片和其它辅助内容。并检查URLs和文本信息。

8.5K50

终于还是对TA下了手!小白教学:模拟登陆网站并爬取信息

这里虽以教务网作为示例网站,但是获取的信息仅是小编本人的个人信息,涉及任何其他信息,所以小白在学的时候注意哦,不要随便爬别人网站的数据~~~ 我们先使用chrome浏览器打开目标网站http://jiaowu...好了这里的数据便一目了然: 请求地址:http://jiaowu.****.cn/jiaoshi/bangong/check.asp 请求方法:POST 我们拿到了这些信息之后还不够,你需要查看其中获取的...> org.jsoup jsoup 1.11.2 <....****.cn/jiaoshi/bangong/check.asp");// 身份认证的地址 Map data = new HashMap(); // 设置post...; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import java.io.IOException

1K21
领券