导入相应的jar包
****************************************************
package com.segsec.crm.baidu;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
public class BaiduMp3 {
private BaiduMp3(){}
private static BaiduMp3 mp3;
static{
mp3=new BaiduMp3();
}
public synchronized static BaiduMp3 getInstance(){
if(mp3==null){
mp3=new BaiduMp3();
}
return mp3;
}
/*
* 解析歌手
*/
//http://list.mp3.baidu.com/top/singer/A.html
public String parseSingerlist(String charCode){
String html="http://list.mp3.baidu.com/top/singer/"+charCode+".html";
try {
URL url=new URL(html);
Document doc=Jsoup.parse(url,1000*100);
//根据唯一标识解析
Element singerlistDiv=doc.getElementsByAttributeValue("class", "content").first();
//Element singerlistDiv=doc.getElementsByClass(className)
Elements links=singerlistDiv.getElementsByTag("a");
for(Element link:links){
String linkHref=link.attr("href");
String linkText=link.text().trim();
System.out.println(linkText);
//System.out.println("linkHref"+linkHref);
if(!"".equals(linkText)){
writetofile(charCode,linkText,linkHref,"f:/baiduSinger.txt");
}
}
//System.out.println(links.size());
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return "";
}
public List<String> getCharCode(){
String url="http://list.mp3.baidu.com/top/singer/A.html";
List<String> charlist=new ArrayList<String>();
try {
URL u=new URL(url);
Document doc=Jsoup.parse(u, 1000*10);
Element charBarDiv=doc.getElementsByAttributeValue("class", "bar").first();
Elements links=charBarDiv.getElementsByTag("a");
for(Element link:links){
charlist.add(link.text().trim());
}
System.out.println(charlist.size());
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return charlist;
}
/*
* 解析所有歌曲
*/
//http://mp3.baidu.com/m?rf=top-singer&tn=baidump3&ct=134217728&lm=-1&word=%B0%B2%BF%B5
public String parseSongsBySinger(String singerName){
return "";
}
public void writetofile(String charCode,String line,String url,String dir){
BufferedWriter bww=null;
try {
bww=new BufferedWriter(new OutputStreamWriter(
new FileOutputStream("f:/baiduSinger.txt",true),"UTF-8"));
StringBuffer s = new StringBuffer();
s.append(line).append("|").append(charCode);
bww.write(s.toString().trim());
bww.newLine();
bww.flush();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
freeIO(bww);
}
}
public void freeIO(BufferedWriter bww){
try {
if(bww!=null)
bww.close();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* @param args
*/
public static void main(String[] args) {
BaiduMp3 mp3=new BaiduMp3();
List<String> strs=mp3.getCharCode();
for(int i=0;i<strs.size()-1;i++){
mp3.parseSingerlist(strs.get(i));
}
}
}
**********************************
此程序只解析出了百度音乐歌手 解析歌曲其实方法类似 只是唯一标识不同