2012-07-05 1 views
0

У меня есть следующий код, который извлекает URL-адреса с данной страницы с помощью jsoup.Извлечение https urls с помощью 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; 
    } 
} 

То, что я пытаюсь сделать, это создать искатель, который извлекает только https сайт. Я даю обходчику начальную ссылку для начала, затем он должен извлечь весь сайт https, затем взять каждую извлеченную ссылку и сделать то же самое с ними, пока не достигнет определенного количества собранных URL-адресов.

Мои вопросы: Вышеприведенный код может извлекать все ссылки на данной странице. Мне нужно извлечь ссылки, которые начинаются только с https://, что мне нужно сделать для этого?

+0

Есть сайты, которые автоматически перенаправляют пользователя на сайт HTTPS, если они поступают с HTTP-сайта, вам нужны такие ссылки? (В этом случае это немного сложнее, так как здесь вы должны инициировать HTTP-запрос). – nhahtdh

+0

Спасибо. Нет. Я просто хочу собирать https-сайты из Интернета. –

ответ

2

Вы можете использовать селекторы jsoup. Они довольно мощные.

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. 

и т. Д. Экспериментируйте с ними, вы узнаете правильный.