2016-04-05 7 views
1

Ich habe vor kurzem WebGrude verwendet, um einige Inhalte von Webseiten zu scrapen. Dann habe ich versucht, einige Suchergebnisse von E-Bay zu kratzen. Hier was versucht,Wie scrappe ich Suchergebnisse mit WebGrude?

@Page("http://www.ebay.com/sch/{0}") 
public class PirateBay { 

    public static void main(String[] args) { 
     //Search calls Browser, which loads the page on a PirateBay instance 
     PirateBay search = PirateBay.search("iPhone"); 

     while (search != null) { 
      search.magnets.forEach(System.out::println); 
      search = search.nextPage(); 
     } 
    } 

    public static PirateBay search(String term) { 
     return Browser.get(PirateBay.class, term); 
    } 

    private PirateBay() { 
    } 

    /* 
* This selector matches all magnet links. The result is added to this String list. 
* The default behaviour is to use the rendered html inside the matched tag, but here 
* we want to use the href value instead. 
*/ 
    @Selector(value = "#ResultSetItems a[href*=magnet]", attr = "href") 
    public List<String> magnets; 

/* 
* This selector matches a link to the next page result, wich can be mapped to a PirateBay instance. 
* The Link next gets the page on the href attribute of the link when method visit is called. 
*/ 
    @Selector("a:has(img[alt=Next])") 
    private Link<PirateBay> next; 

    public PirateBay nextPage() { 
     if (next == null) 
      return null; 
     return next.visit(); 
     } 
    } 

Aber das Ergebnis ist leer. Wie kann ich Suchresultate damit kratzen?

Antwort

0

Der Selektor "#ResultSetItems a [href * = magnet]" wählt die Links aus, bei denen das Attribut href die Zeichenfolge "magnet" auf seinem Wert hat.

Hier können Sie mehr über atribute Selektoren lesen: attribute_selectors

Was Sie wollen, ist „#ResultSetItems h3.lvtitle ein“

Ihre Wähler Um zu testen, da diese schöne repl ist die Jsoup, die gleiche Bibliothek verwendet verwendet von webgrude Try jsoup

Verwandte Themen