【问题标题】:How to navigate websites using Jsoup in java如何在 Java 中使用 Jsoup 浏览网站
【发布时间】:2013-06-07 14:00:50
【问题描述】:

如何在 Jsoup 中导航(如网页抓取)到不同的链接?

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

例如,从 google 网页我希望能够转到 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();
    }
}

}

【问题讨论】:

    标签: java html-parsing web-crawler jsoup


    【解决方案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
    }
    

    【讨论】:

    • 如果我使用 Jsoup 浏览不同的子链接,并且某些链接是由 javascript 生成的,我还能浏览它们吗?否则这将是一个问题
    • 如果您可以从 html 中提取链接,则可以使用它们。你有一个你心目中的例子(页面)吗?
    • 一个例子是转到w3schools.com 主页而不是使用链接“学习 SQL”(w3schools.com/sql/default.asp) 在学习 SQL 页面中,我想转到链接“现在开始学习 SQL! " (w3schools.com/sql/sql_intro.asp) 所以一般来说我会 1.) 连接到一个 URL,2.) 解析我需要的信息,3.) 选择所有进一步的链接,4.) 连接到它们,5.) 只要继续这个有新的链接。
    • 是的,没错。您如何构建它取决于“解析信息”的含义,即每个级别是否不同或相同,页面布局是否真正递归。一些动态内容可能难以处理,但该页面看起来很简单。
    • 我不想问,但你能告诉我使用我的代码我将如何添加你发布的代码我已经能够从第一页选择所有链接现在我想全选进一步的链接。谢谢!
    猜你喜欢
    • 2012-11-16
    • 2011-12-09
    • 2016-11-16
    • 1970-01-01
    • 1970-01-01
    • 2014-08-07
    • 2013-01-25
    • 1970-01-01
    • 2017-11-25
    相关资源
    最近更新 更多