【问题标题】:how to navigate to other pages when pagination exists in the URLURL中存在分页时如何导航到其他页面
【发布时间】:2018-02-28 14:48:32
【问题描述】:

我有一个 URL(http://myURL.com),我正在从中读取网页的内容。一个问题是我只能阅读 page1 内容。在给定分页页面的 page2 URL 的情况下,在读取 page2 内容时使用 jsoup API,仍然在打印时显示 page1 的内容,而不是显示 page2 内容,但是当在浏览器中打开 page2 URL 时,它正在显示内容网页浏览器中的 page2。发生分页时如何阅读其他页面的内容有什么建议吗?

原网址:

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

page2的URL:(点击next按钮后可以看到page2的分页页面):

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是在page1(分页)中点击Next按钮时出现的URL?

ps:page2URL 与 page1URL 相同,但有额外的附加器(#InplviewHash03....),请比较两个 URL 以了解区别。

【问题讨论】:

  • 我想知道您为什么删除了关于此的第一个问题。我觉得这里有点被骗了,因为我试图在那里给你一个详尽的答案。结果你只是简单地把问题收回......嗯......不会让我想再次提供帮助。

标签: java pagination web-crawler jsoup


【解决方案1】:

我建议阅读 URL 中 # 的含义。它最初的意思是作为页面中的锚点,以便浏览器可以立即跳转到该元素的显示。现在它被用于 AJAX,因为可以通过 JavaScript 读取参数。参考见What is the meaning of # in URL and how can i use that?

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-01-13
    • 1970-01-01
    • 1970-01-01
    • 2022-01-06
    • 2020-07-29
    • 1970-01-01
    • 2022-11-14
    相关资源
    最近更新 更多