我有一个网址(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 ....),请比较两个网址以了解差异。
答案 0 :(得分:0)
我建议您阅读网址中#
的含义。它最初是指页面中的锚点,以便浏览器可以立即跳转到该元素的显示。这些天它用于AJAX,因为它可以通过JavaScript读出参数。参考文献见What is the meaning of # in URL and how can i use that?
这意味着您的网站包含JavaScript,可在通过JavaScript获取原始内容后加载第2页的内容。正如我之前在您删除的问题中解释过的那样,JSoup将不会运行JavaScript,因此您仍然需要识别AJAX调用并获取该调用的真实参数。如果有此功能,您可以访问第2页的内容。