我想用Jsoup解析这个lisk但是它失败了" https://www.express.pk/world/archives/?page = 1"

时间:2018-05-15 12:16:33

标签: jsoup

我想解析这个链接// https://www.express.pk/world/archives/?page=1 // 在Jsoup,但它失败的方式是什么

Mainactivity:

public class MainActivity extends AppCompatActivity {


    private TextView result;


    @Override

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        result = (TextView) findViewById(R.id.result);
        new Thread(new Runnable() {
            @Override
            public void run () {
                final StringBuilder builder = new StringBuilder();

                try {
                    Document doc = Jsoup.connect("https://www.express.pk/world/archives/?page=1/").get();
                    String title = doc.title();
                    Elements links = doc.select("a[href]");

                    builder.append(title).append("\n");

                    for (Element link : links) {
                        builder.append("\n").append("").append(link.text());
                    }
                } catch (IOException e) {
                    builder.append("Error : ").append(e.getMessage()).append("\n");
                }

                runOnUiThread(new Runnable() {
                    @Override
                    public void run () {
                        result.setText(builder.toString());
                    }
                });
            }
        }).start();

    }
}

Activity_main:

    <TextView
        android:gravity="center"
        android:id="@+id/result"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Result ..."
        android:layout_centerHorizontal="true"
        android:layout_marginTop="30dp"
        android:textSize="17sp"/>

2 个答案:

答案 0 :(得分:1)

此服务器有一些奇怪的行为。对于给定的URL,它返回状态404,这意味着“未找到”但仍然返回预期的内容。

Jsoup检查返回状态,因为它获得404谓词内容不正确,并抛出错误。 要从此网站获取内容,您需要通过设置ignoreHttpErrors标志来禁用此默认行为:

  Document doc =  Jsoup.connect("https://www.express.pk/world/archives/?page=1/")
            .ignoreHttpErrors(true)
            .get(); 

答案 1 :(得分:0)

服务器响应404错误代码,这就是正常的JSoup get机制返回异常的原因。

但是,如果您使用Connection.Response

的更基本功能,则可以管理网络服务器的响应内容
Response response = Jsoup.connect("https://www.express.pk/world/archives/?page=1/").execute();
Document doc = response.parse();

您还可以使用

获取返回码
int statusCode = response.statusCode();

请注意,我现在没有Java编译器runnig,因此上面的代码不在我的脑海中而且包含错误。