1

我如何在 Jsoup 中导航(如网络爬行)到不同的链接?

对于这个例子,我已经完成了获取标题、获取链接和获取文本的基础知识。但我希望能够使用其中一个子链接并进入该子链接的内部。

例如,从谷歌网页我希望能够转到 youtube 页面,因为它是 google 中的子链接之一,并且一旦在 youtube 中选择另一个子链接,就可以获取一个字符串。

我怎么能在 Jsoup 中做到这一点?

import java.io.IOException;

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


public class JSoupTest {


public static void main(String args[]) {

    try {


        Document doc=Jsoup.connect("http://www.google.com").get();

        // get page title
        String title = doc.title();
        System.out.println(title);

        //gets all links
        Elements links = doc.select("a[href]");
        for (Element link : links) {

        // get the value from href attribute
        System.out.println("\nlink : " + link.attr("href"));

        }

        for( Element element : doc.select("p") )    
                    // Select all 'p'-Tags and loop over them
        {
            if( element.hasText() )                 
                    // Check if the element has text (since there are some empty too)
            {
              System.out.println(element.text()); // print the element's text
            }
        }


    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

}

4

1 回答 1

1

您需要获取该页面,即

String link_addr = link.attr("href");
Document link_doc = Jsoup.connect(link_addr).get();
// do stuff with link_doc

如果您正在处理许多相同类型的子页面,您可能需要创建一个辅助方法来执行此操作,即

public void do_stuff_with(String link_addr){
  String link_addr = link.attr("href");
  Document link_doc = Jsoup.connect(link_addr).get();
  // do stuff with link_doc
}
于 2013-06-11T17:16:49.670 回答