2012-07-05 5 views
0

J'ai le code suivant qui extrait les URL d'une page donnée en utilisant jsoup.Extraire les URL https en utilisant jsoup

import org.jsoup.Jsoup; 
import org.jsoup.helper.Validate; 
import org.jsoup.nodes.Document; 
import org.jsoup.nodes.Element; 
import org.jsoup.select.Elements; 

import java.io.IOException; 

/** 
* Example program to list links from a URL. 
*/ 
public class ListLinks { 
    public static void main(String[] args) throws IOException { 

     String url = "http://shopping.yahoo.com"; 
     print("Fetching %s...", url); 

     Document doc = Jsoup.connect(url).get(); 
     Elements links = doc.getElementsByTag("a"); 


     print("\nLinks: (%d)", links.size()); 
     for (Element link : links) { 
     print(" * a: <%s> (%s)", link.absUrl("href") /*link.attr("href")*/, trim(link.text(), 35));  
     } 
    } 

    private static void print(String msg, Object... args) { 
     System.out.println(String.format(msg, args)); 
    } 

    private static String trim(String s, int width) { 
     if (s.length() > width) 
      return s.substring(0, width-1) + "."; 
     else 
      return s; 
    } 
} 

Ce que je suis en train de faire, est de construire un robot qui extrait seul site https. Je donne au crawler un lien de germe pour commencer, puis il doit extraire tout le site https, puis prendre chacun des liens extraits et faire la même chose avec eux jusqu'à atteindre un certain nombre d'URL collectées. Mes questions: Le code ci-dessus permet d'extraire tous les liens dans une page donnée. J'ai besoin d'extraire les liens qui commencent par https:// seulement, que dois-je faire pour y parvenir?

+0

Il existe des sites qui redirigent automatiquement l'utilisateur vers le site HTTPS s'ils proviennent du site HTTP, voulez-vous de tels liens? (C'est un peu plus difficile dans ce cas, puisque vous devez initier une requête HTTP ici). – nhahtdh

+0

Merci. Non. Je veux juste collecter des sites https sur Internet. –

Répondre

2

Vous pouvez utiliser des sélecteurs de jsoup. Ils sont assez puissants.

doc.select("a[href*=https]");//(This is the one you are looking for)selects if value of href contatins https 
doc.select("a[href^=www]");//selects if value of href starts with www 
doc.select("a[href$=.com]");//selects if value of href ends with .com. 

etc .. Expérimentez avec eux, vous trouverez la bonne.

Questions connexes