2014-09-30 83 views
0

基本上我试图做的是在url中输入歌曲和艺术家,然后将该歌曲的歌词带到页面,然后我将找到正确的方式得到那些歌词。我新使用Jsoup。到目前为止,我遇到的问题是我无法弄清楚歌词的正确获取方式。我已经尝试在“b”之后获得第一个“div”,但似乎没有按照我的计划进行。使用Jsoup获取文本块

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(); 
    } 


} 
+0

请把只是在你的问题上付出很少的努力。你所发布的只是一个“想要”和一个无法解释的代码转储,这在坦白的说法上显得有点不诚实。如果您多花一点时间来描述您的代码出现了哪些问题,您不清楚哪些具体的事情,我们可能会给您一个更好的答案。我期待着检查你编辑的问题。祝你好运!另外,请记住,我们都是志愿者,所以你的努力使它很容易帮助你**很多**赞赏! – 2014-09-30 00:09:23

+0

请注意,如果这是我的项目,我会深入研究一下我试图提取的网页的源代码,然后逐步尝试隔离我想要的信息。 – 2014-09-30 00:41:34

回答

0

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

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

或者,如果它总是与歌词第六div元素,你可以使用:

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

非常感谢。我正在以我想要的方式获得它。 – BlackOranges 2014-09-30 15:50:20