JSoup无法检索网页上的链接

时间:2018-08-29 00:40:00

标签: xml xml-parsing jsoup

我正在使用JSoup解析站点地图。

public void mySightingsJsonRequest() {


    //get username held in shared preferences (KMcE)
    HashMap<String, String> user = newSession.getUsername();
    final String username = user.get(SessionUtility.KEY_USERNAME);

    JSONObject obj = new JSONObject();
    try {
        obj.put("Username", username);
    } catch (JSONException e) {
        e.printStackTrace();
    }

    JsonObjectRequest mySightingsRequest = new JsonObjectRequest(Request.Method.POST, ConnectionURLs.MY_SIGHTINGS, obj, new Response.Listener<JSONObject>() {
        @Override
        public void onResponse(JSONObject response) {
            Log.d(TAG, "onResponse: MySightings response");
            try {
                JSONArray jsonArray = response.getJSONArray("server_response");

                for (int i = 0; i < jsonArray.length(); i++) {
                    JSONObject sighting = jsonArray.getJSONObject(i);

                    int sightingRecordingNumber = sighting.getInt("Recording Number");
                    String sightingImgURL = sighting.getString("IMG");
                    String sightingCommonName = sighting.getString("Common Name");
                    String sightingUsername = sighting.getString("Submitted by");
                    double sightingLongitude = sighting.getDouble("Longitude");
                    double sightingLatitude = sighting.getDouble("Latitude");

                    mSightingList.add(new SightingSingle(sightingRecordingNumber, sightingImgURL, sightingCommonName, sightingUsername, sightingLatitude, sightingLongitude));

                }
                mMySightingsAdapter = new MySightingsAdapter(getActivity(), mSightingList);
                mMySightingRecyclerView.setAdapter(mMySightingsAdapter);

            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {

        }
    });

    mRequestQueue.add(mySightingsRequest);
}

输出:

Document dom = Jsoup.parse(new URL(pageRacine).openStream(), "UTF-8", "https://www.lavisducagou.nc/page-sitemap.xml"); Elements liens = dom.getElementsByTag("a"); System.out.println(liens.size() + " links have been retrieved");

我也尝试过这种方法,但是不起作用:

0 links have been retrieved

有人可以帮助我我疯了吗?

编辑Document dom = Jsoup.parse(String.valueOf(new URL("https://www.lavisducagou.nc/page-sitemap.xml").openStream()), "", Parser.xmlParser()); liens = dom.select("a"); 输出System.out.println(dom.body());

1 个答案:

答案 0 :(得分:1)

您没有任何链接,因为站点地图没有标签为a的元素。网站地图中的网址位于标签loc中。使用Elements liens = dom.getElementsByTag("loc");

您可能对浏览器中的内容感到误解。使用浏览器时,您会收到两个请求。第一个下载sitemap.xml,第二个下载main-sitemap.xsl,其中包含有关浏览器如何显示xml文件的信息。

Jsoup不这样做。使用System.out.println(dom.html())查看Jsoup下载的文档的外观。

使用浏览器中的网络标签查看下载了哪些元素,以显示数据。