2016-10-05 3 views
0
Connection con = Jsoup.connect(https://www.google.com/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8); //Just giving an example 
Document htmlDoc = con.get();  
Elements linksOnPage = htmlDoc.select("a[href]"); 
for(Element link : linksOnPage){ 
//pushing the links on to a stack 
} 

Was ich brauche ist, dass ich die Links so abrufen möchte, dass der erste Link, der von linksOnPage abgerufen wird, mein Stack-Top wird.jsoup: ein Objekt vom Typ Element durchlaufen

1) Kann mir jemand vorschlagen, ob es eine andere Möglichkeit gibt, das Link-Objekt rückwärts zu durchlaufen?

2) Irgendein anderer Weg? Was zum Beispiel, wenn ich alle diese Links in der Reihenfolge ihrer Ankunft zu einer LinkedList kopiere und dann die Liste rückwärts durchquere? Ich verstehe, dass dies eine etwas naive Methode sein könnte.

Antwort

1

Da Elements eine Liste ist, können Sie es wie folgt tun -

if (linksOnPage.size() > 0) { 
    for (int i = linksOnPage.size() - 1; i >=0; i--) { 
     Element e = linksOnPage.get(i); 
     //push e 
    } 
} 
1

Elements ist bereits ein ArrayList Sie nur Schleife müssen sie nach hinten unten dergleichen.

Document htmlDoc = con.get();  
Elements linksOnPage = htmlDoc.select("a[href]"); 
for(int i=linksOnPage.size()-1;i>=0;i++) 
     { 
      System.out.println(linksOnPage.get(i)); 
     } 

Von Javadoc von jsoup

public class Elements 
extends java.util.ArrayList<Element> 
A list of Elements, with methods that act on every element in the list. 
To get an Elements object, use the Element.select(String) method. 
Verwandte Themen