【问题标题】:Jsoup not returning data of redirected linkJsoup不返回重定向链接的数据
【发布时间】:2017-02-02 16:07:51
【问题描述】:

我正在加载一个网站,该网站在完成后立即重定向到新网页。我希望重定向的网站应该由 jsoup 解析并返回。以下是我在 Android Studio 中使用的代码:

class RetrieveListTask1 extends AsyncTask<String, Void, List<String>> {
    Document doc;
    protected List<String> doInBackground(String... urls) {

        try {
             doc = Jsoup.connect("https://mahabhulekh.maharashtra.gov.in/Pune/Pune.html").get();
            Log.d("Element : ",doc.toString());

        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
        return null;
    }

上面提到的链接重定向到https://mahabhulekh.maharashtra.gov.in/Pune/Home.aspx。你可以检查它。 我无法直接加载https://mahabhulekh.maharashtra.gov.in/Pune/Home.aspx,就像我直接加载它一样它会转移回主页。

【问题讨论】:

标签: android jsoup


【解决方案1】:

重定向实际上是通过提交表单的 Javascript 代码执行的。 希望我们可以使用 Jsoup 提交表单。

// Load document as usual...
Document doc = Jsoup.connect("https://mahabhulekh.maharashtra.gov.in/Pune/Pune.html").get();

// Find the form
FormElement form = (FormElement) doc.getElementById("frmrd");
if (form == null) {
    // Form not found...
} else {
    doc = form.submit().execute().parse();
    System.out.println("Document base uri: " + doc.baseUri());
    System.out.println("Content: " + doc.outerHtml());
}

输出(截断)

Document base uri: https://mahabhulekh.maharashtra.gov.in/Pune/Home.aspx
Content: <!doctype html>
<html xmlns="http://www.w3.org/1999/xhtml">
 <head>
  <title>

</title> 
  <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script> 
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script> 
  <link href="Style/MainStyle.css" rel="stylesheet">
  <meta name="viewport" content="width=device-width, initial-scale=1.0"> 
  <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script> 
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script> 
  <script type="text/javascript">
        window.onload = function divisionName() {
            switch (document.getElementById('param').value) {
                case "1":
                    document.getElementById('divisionName').innerHTML = 'अमरावती विभाग';
...

另见:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-23
    • 2016-01-25
    • 1970-01-01
    • 2018-03-04
    • 1970-01-01
    • 2018-07-23
    • 2015-07-21
    相关资源
    最近更新 更多