2017-09-19 1 views
0

Ich habe eine URL (http://myURL.com) von der ich den Inhalt der Webseite lese. Ein Problem ist, dass ich nur den Inhalt von page1 lesen kann. Wird die jsoup API beim Lesen der page2-URL der page2-URL der Paginierungsseiten verwendet, zeigt sie beim Drucken den Inhalt von page1 anstelle von page2-Inhalt an, aber wenn die page2-URL im Browser geöffnet wird, zeigt sie den Inhalt an von page2 in einem Webbrowser. Haben Sie Vorschläge, wie Sie den Inhalt anderer Seiten bei der Paginierung lesen können?wie Sie zu anderen Seiten navigieren, wenn in der URL eine Seitennummer existiert

Original-URL:

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

URL page2: (Nach dem Einschalten der nächsten Schaltfläche page2 der Paginierung Seiten zu sehen):

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-Code:

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); 
    } } 

In dem obigen Code, wenn ich auch page2URL übergebe, zeigt es nur den Inhalt von page1, aber wenn er in der Browser zeigt es den Seiteninhalt an. Liegt es daran, dass page2URL beim Klicken auf die Schaltfläche "Next" in page1 (Paginierung) auf die URL zurückzuführen ist?

ps: page2URL ist dasselbe wie page1URL, aber mit zusätzlichen Appendern (# InplviewHash03 ....), bitte vergleichen Sie beide URLs, um den Unterschied zu erkennen.

+0

Ich frage mich, warum Sie Ihre erste Frage zu diesem Thema entfernt haben. Ich fühle mich hier ein bisschen ausgetrickst, da ich versucht habe, Ihnen eine erschöpfende Antwort zu geben. Als Ergebnis nehmen Sie einfach die Frage zurück ... hmm ... bringt mich nicht dazu, wieder zu helfen. – luksch

Antwort

0

Ich empfehle Ihnen, die Bedeutung von # in einer URL nachzulesen. Es war ursprünglich als Anker innerhalb einer Seite gedacht, so dass der Browser sofort zur Anzeige dieses Elements springen konnte. Heutzutage wird es für AJAX verwendet, weil es möglich ist, den Parameter über JavaScript auszulesen. Für Referenz siehe What is the meaning of # in URL and how can i use that?

Das bedeutet, dass Ihre Website JavaScript enthält, das den Inhalt von Seite 2 lädt, nachdem Sie den ursprünglichen Inhalt über JavaScript erhalten haben. Wie ich Ihnen zuvor in der von Ihnen entfernten Frage erklärt habe, wird JSoup kein JavaScript ausführen, so dass Sie immer noch den AJAX-Aufruf identifizieren müssen und die tatsächlichen Parameter dieses Aufrufs abrufen müssen. Wenn Sie dies haben, können Sie auf den Inhalt von Seite 2 zugreifen.

Verwandte Themen