如果URL中存在分页,如何导航到其他页面

时间:2017-09-19 17:49:24

标签: java pagination web-crawler jsoup

我有一个网址(http://myURL.com),我可以通过该网址阅读网页内容。问题是我只能读取page1内容。在给定分页页面的page2 URL时读取page2内容时使用jsoup API,仍然是在打印时显示page1的内容而不是显示page2内容,但是当在浏览器中打开page2 URL时它显示内容web浏览器中的page2。有关如何在分页时读取其他页面内容的任何建议吗?

原始网址:

http://myURL.com/myDocs/forms/AllItems.aspx?RootFolder=%2fsites%2docs3%2fmiscc%20Documents%2fstatus%20yearly%2f2017&FolderCTID=0x012906D46689EQWEPKA

第2页的网址:(点击下一个按钮以查看分页页面的第2页):

http://myURL.com/myDocs/forms/AllItems.aspx?RootFolder=%2fsites%2docs3%2fmiscc%20Documents%2fstatus%20yearly%2f2017&FolderCTID=0x012906D46689EQWEPKA #InplviewHash038662ba-180e-41fc-8ad6-8b9805aa1b8b=Paged%3DTRUE-p_SortBehavior%3D0-p_FileLeafRef%3DGM%255fSW%2520TEAM%255fProgram%255fStatus%255f20170821%255fvFNAL%252epdf-p_ID%3D85-PageFirstRow%3D31-RootFolder%3D%252fsites%252fijjhhj3%252fyeal%2520Documents%252fstatus%2520Report%252f2017

java代码:

 public class Tester {
        private static final String page1URL = "http://myURL.com/myDocs/forms/AllItems.aspx?RootFolder=%2fsites%2docs3%2fmiscc%20Documents%2fstatus%20yearly%2f2017&FolderCTID=0x012906D46689EQWEPKA";

    private String final String page2URL= "http://myURL.com/myDocs/forms/AllItems.aspx?RootFolder=%2fsites%2docs3%2fmiscc%20Documents%2fstatus%20yearly%2f2017&FolderCTID=0x012906D46689EQWEPKA#InplviewHash038662ba-180e-41fc-8ad6-8b9805aa1b8b=Paged%3DTRUE-p_SortBehavior%3D0-p_FileLeafRef%3DGM%255fSW%2520TEAM%255fProgram%255fStatus%255f20170821%255fvFNAL%252epdf-p_ID%3D85-PageFirstRow%3D31-RootFolder%3D%252fsites%252fijjhhj3%252fyeal%2520Documents%252fstatus%2520Report%252f2017";
      public static void main(String[] args) throws IOException {
            org.jsoup.nodes.Document doc = Jsoup.connect(page1URL).get();
            System.out.println(doc);
    }  }

在上面的代码中,当我也传递page2URL时,它只显示page1的内容,但是当在浏览器中打开它时显示page2内容。是因为page2URL是在第1页(分页)中单击“下一步”按钮时发生的URL吗?

ps:page2URL与page1URL相同,但有额外的appenders(#InplviewHash03 ....),请比较两个网址以了解差异。

1 个答案:

答案 0 :(得分:0)

我建议您阅读网址中#的含义。它最初是指页面中的锚点,以便浏览器可以立即跳转到该元素的显示。这些天它用于AJAX,因为它可以通过JavaScript读出参数。参考文献见What is the meaning of # in URL and how can i use that?

这意味着您的网站包含JavaScript,可在通过JavaScript获取原始内容后加载第2页的内容。正如我之前在您删除的问题中解释过的那样,JSoup将不会运行JavaScript,因此您仍然需要识别AJAX调用并获取该调用的真实参数。如果有此功能,您可以访问第2页的内容。