如何在Jsoup中导航(如网页抓取)到另一个链接?
对于这个例子,我已经完成了获得标题,获取链接和获取文本的基础知识。但我希望能够使用其中一个子链接并转到该子链接的内部。
例如,从谷歌网页我希望能够转到youtube页面,因为谷歌中的一个子链接和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();
}
}
}
答案 0 :(得分: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
}