使用Jsoup获取文本块

时间:2014-09-30 00:04:51

标签: java html-parsing jsoup

基本上我尝试做的就是在网址中输入歌曲和艺术家,然后将我带到歌词的页面,然后我会找到正确的方法得到那些歌词。我是使用Jsoup的新手。到目前为止,我遇到的问题是我无法弄清楚获取歌词的正确方法。我尝试过第一个" div"在" b"之后但它似乎没有按照我的计划方式解决。

public static void search() throws MalformedURLException {

    Scanner search = new Scanner(System.in);
    String artist;
    String song;

    artist = search.nextLine();
    artist = artist.toLowerCase();
    System.out.println("Artist saved");
    song = search.nextLine();
    song = song.toLowerCase();
    System.out.println("Song saved");
    artist = artist.replaceAll(" ", "");
    System.out.println(artist);
    song = song.replaceAll(" ", "");
    System.out.println(song);
    try {
        Document doc;
        doc = Jsoup.connect("http://www.azlyrics.com/lyrics/"+artist+"/"+song+".html").get();
        System.out.println(doc.title());

        for(Element element : doc.select("div")) {

            if(element.hasText()) {
                System.out.println(element.text());
                break;
            }

        }
    } catch (IOException e){
        e.printStackTrace();
    }


}

1 个答案:

答案 0 :(得分:0)

我不知道所有歌曲页面中是否一致,但在您显示的页面中,歌词显示的div元素的第一个属性是margin。如果这是一致的,你可以按照......的顺序尝试一些东西。

Elements eles = doc.select("div[style^=margin]");         
System.out.println(eles.html());

或者如果它总是带有歌词的第6个div元素,你可以使用它:

Elements eles = doc.select("div");
if (eles.size() >= 6) {
    System.out.println(eles.get(6).html());
}