`
zzjb011
  • 浏览: 1496 次
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

jsoup java 抓取百度MP3 top500 ----冰之龙代码

 
阅读更多
冰之龙原创 冰之龙代码 因为正则表达式不支持中文所以在MP3下载列表中没有包含中文连接 要包含中文连接也很容易,自己抓取http MP3用字符串查找 jsoup下载地址为[url=http://jsoup.org/download]http://jsoup.org/download[/url] 代码
分享到:
评论
1 楼 zzjb011 2012-04-12  
package soso.tool;

import java.io.IOException;
import java.util.ArrayList;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.jsoup.Jsoup;
//import org.jsoup.helper.Validate;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

/*
* jsoup java 抓取百度MP3  top500 ----冰之龙代码
* 冰之龙原创 冰之龙代码
* 时间 2012-4-12 1:10:49
* */

public class MyUrls {

/**
* @param args
*/
public MyUrls(String url) {
startUrl = url;
}

String startUrl;

Document doc;
Elements links;
Elements media;
Elements imports;
ArrayList<UrlAndTitle> al = new ArrayList<UrlAndTitle>();
ArrayList<SongInfo> songInfolList = new ArrayList<MyUrls.SongInfo>();

public boolean getUrlContent() {
try {
doc = Jsoup.connect(startUrl).get();
} catch (IOException e) {
// TODO: handle exception
System.out.println(e.getMessage());
return false;
}
return true;

}

public void initElements() {
links = doc.select("a[href]");
media = doc.select("[src]");
imports = doc.select("link[href]");
}

public void UrlsLinksArrayListDisplay() {
int i = 0;
for (UrlAndTitle uat : al) {
i++;
System.out.println("标题:" + uat.title);

System.out.println("网址:" + uat.myURL);
System.out.println();
}
System.out.println("共有" + i + "个符合结果");
}

public void initUrlsLinksArrayList() {
al.clear();
for (Element link : links) {
UrlAndTitle uat = new UrlAndTitle();
uat.myURL = link.attr("abs:href");
uat.title = trim(link.text(), 35 * 10);
al.add(uat);
}
}

private static String trim(String s, int width) {
if (s.length() > width)
return s.substring(0, width - 1) + ".";
else
return s;
}

public void initEverySongSoSoPara() {
String partHare = "http://mp3.baidu.com/m?rf=top-index&tn=baidump";
String sosoH = "&word=";
String sosoE = "&lm=";

for (UrlAndTitle uat : al) {
if (uat.myURL.contains(partHare)) {
String song = uat.myURL.substring(uat.myURL.indexOf(sosoH)
+ sosoH.length(), uat.myURL.indexOf(sosoE));
SongInfo songInfo = new SongInfo();
if (song.contains("+")) {
song = song.replace('+', ':');
// System.out.println(song);
String[] songI = song.split(":");
songInfo.name = songI[0];
if (songI.length == 1) {

} else
songInfo.actor = songI[1];
songInfo.sosoList = uat.myURL;
songInfolList.add(songInfo);
} else {

songInfo.name = song;
songInfo.sosoList = uat.myURL;
songInfolList.add(songInfo);

}

}
}
}

public void SongInfoArrayListDisplay() {
int i = 0;
for (SongInfo si : songInfolList) {
i++;
System.out.println(i + ":");
System.out.println("歌曲名称:" + si.name);

System.out.println("艺术家:" + si.actor);

System.out.println("网址:" + si.sosoList);
System.out.println();
}
System.out.println("共有" + i + "个符合结果");
}

public void fillMp3DownList(SongInfo songInfo) {
if (songInfo.mp3downList == null) {
songInfo.mp3downList = new ArrayList<String>();
}
ArrayList<String> arrayList = getEveryDownList(songInfo.sosoList);
for (String string : arrayList) {
songInfo.mp3downList.addAll(getMp3List(string));
}
delMP3List(songInfo.mp3downList ) ;
}
public void songInfomp3downListDisplay(SongInfo songInfo){
System.out.println("歌曲名称:" + songInfo.name);
System.out.println("艺术家:" + songInfo.actor);
for (String string : songInfo.mp3downList) {
System.out.println(string);
}
}

public void delMP3List(ArrayList<String> mp3List) {
ArrayList<String> tempList = new ArrayList<String>();
String temp="";
for (String string:mp3List) {
if (!temp.contains(string)) {
temp=temp+' '+string;
tempList.add(string);
}

}
mp3List.clear();
mp3List.addAll(tempList);
}

private ArrayList<String> everyDownList = new ArrayList<String>();

public ArrayList<String> getEveryDownList(String url) {
everyDownList = new ArrayList<String>();
startUrl = url;
if (getUrlContent()) {
initElements();
initUrlsLinksArrayList();
fillEveryDownList();
// UrlsLinksArrayListDisplay();
}
return everyDownList;
}

public void fillEveryDownList() {
String startWith = "http://box.zhangmen.baidu.com/m?word=mp3";
String contains = "baidusg,";
for (UrlAndTitle uat : al) {
if (uat.myURL.startsWith(startWith) && uat.myURL.contains(contains)) {
everyDownList.add(uat.myURL);
// System.out.println(uat.myURL);
}
}
}

public ArrayList<String> getMp3List(String url) {
ArrayList<String> mp3List = new ArrayList<String>();
startUrl = url;
if (getUrlContent()) {
//initElements();
// System.out.println(doc.html());
//getBaiduSongs();
// initUrlsLinksArrayList();
// UrlsLinksArrayListDisplay();
fillMP3List(mp3List);
}
return mp3List;
}

private static String getFilteredContent(String htmlContent, String reg,
int i) {
String content = "";


return content;
}


public void fillMP3List(ArrayList<String> mp3List) {
String endWith = ".mp3";
String no = "...";
Pattern pattern = Pattern.compile("(http://|https://){1}[\\w\\.\\-/:]+");
Matcher matcher = pattern.matcher(doc.html());
//StringBuffer  bfr = new StringBuffer();
while(matcher.find()){
String url=matcher.group();
   /* bfr.append(url);       
    bfr.append("\r\n");  */  
    if (url.contains(endWith)&&!url.contains(no)) {
    mp3List.add(url);
//System.out.println(url);
}
//System.out.println(bfr.toString());
}

}

public  ArrayList<String> getBaiduSongs(){  
ArrayList<String> ss = new ArrayList<String>();  
    String reg = "(.*?)";  
getFilteredContent(doc.html(),reg,0);   
return ss;  
}  

public static void main(String[] args) {
// TODO Auto-generated method stub
String url =
// "http://mp3.baidu.com/m?rf=top-index&tn=baidump3&ct="
// + "134217728&word=因为爱情+王菲,陈奕迅&lm=-1";
"http://list.mp3.baidu.com/top/top500.html";
// "http://67.220.90.30/bbs/archiver/fid-143.html";
// "http://67.220.90.30/bbs/forum-143-5.html";
// "http://205.164.48.253/simple/?f138_57.html";
// "http://tu.uuu9.com/List/List_8.shtml";
MyUrls mu = new MyUrls(url);
if (mu.getUrlContent()) {
mu.initElements();
mu.initUrlsLinksArrayList();
// mu.UrlsLinksArrayListDisplay();
mu.initEverySongSoSoPara();
// mu.SongInfoArrayListDisplay();
for (int i = 0; i < mu.songInfolList.size(); i++) {

mu.fillMp3DownList(mu.songInfolList.get(i));
mu.songInfomp3downListDisplay(mu.songInfolList.get(i));
}
}

}

class UrlAndTitle {
String myURL;

String title;
}

class SongInfo {
String name;
String actor;
String sosoList;
ArrayList<String> mp3downList = null;
}
}

相关推荐

    jsoup-1.15.3.jar

    jsoup-1.15.3.jar,jsoup-1.15.3.jar,jsoup-1.15.3.jar,jsoup-1.15.3.jar,jsoup-1.15.3.jar,jsoup-1.15.3.jar,jsoup-1.15.3.jar,jsoup-1.15.3.jar,jsoup-1.15.3.jar,jsoup-1.15.3.jar,jsoup-1.15.3.jarjsoup-...

    JAVA爬虫Jsoup -Mybatis-Plusaricle-crawling-master.zip

    使用 Java 采集新浪网数据,并使用 Mybatis-Plus 和 Jsoup 进行筛选和存储。 Mybatis-Plus 是一个基于 Mybatis 的增强工具,在 Mybatis 的基础上进行了简化而不失强大的功能。它提供了很多常用的功能,例如通用 ...

    jsoup-1.10.3-API文档-中文版.zip

    赠送源代码:jsoup-1.10.3-sources.jar; 赠送Maven依赖信息文件:jsoup-1.10.3.pom; 包含翻译后的API文档:jsoup-1.10.3-javadoc-API文档-中文(简体)版.zip; Maven坐标:org.jsoup:jsoup:1.10.3; 标签:jsoup、...

    jsoup-1.14.3-API文档-中文版.zip

    赠送源代码:jsoup-1.14.3-sources.jar; 赠送Maven依赖信息文件:jsoup-1.14.3.pom; 包含翻译后的API文档:jsoup-1.14.3-javadoc-API文档-中文(简体)版.zip; Maven坐标:org.jsoup:jsoup:1.14.3; 标签:jsoup、...

    jsoup-1.11.2.jar JsoupXpath-0.3.2

    java的两个包 JsoupXpath-0.3.2 jsoup-1.11.2 解析xml

    java网页抓取Jsoup包全

    java网页抓取所需的Jsoup三个包 jsoup-1.8.1.jar

    jsoup-1.11.3-API文档-中文版.zip

    赠送源代码:jsoup-1.11.3-sources.jar; 赠送Maven依赖信息文件:jsoup-1.11.3.pom; 包含翻译后的API文档:jsoup-1.11.3-javadoc-API文档-中文(简体)版.zip; Maven坐标:org.jsoup:jsoup:1.11.3; 标签:jsoup、...

    jsoup1.8.1抓取爬虫工具

    jsoup1.8.1抓取爬虫工具jsoup1.8.1抓取爬虫工具jsoup1.8.1抓取爬虫工具

    jsoup-1.14.3-API文档-中英对照版.zip

    赠送源代码:jsoup-1.14.3-sources.jar; 赠送Maven依赖信息文件:jsoup-1.14.3.pom; 包含翻译后的API文档:jsoup-1.14.3-javadoc-API文档-中文(简体)-英语-对照版.zip; Maven坐标:org.jsoup:jsoup:1.14.3; 标签...

    jsoup-1.11.3-API文档-中英对照版.zip

    赠送源代码:jsoup-1.11.3-sources.jar; 赠送Maven依赖信息文件:jsoup-1.11.3.pom; 包含翻译后的API文档:jsoup-1.11.3-javadoc-API文档-中文(简体)-英语-对照版.zip; Maven坐标:org.jsoup:jsoup:1.11.3; 标签...

    使用Jsoup,抓取整个网站(包括图片、js、css)

    经过测试,可以抓取一个完整的网站,包括网站的图片、css、js等。同时根据网站目录,在本地生成相同目录。使用Jsoup+Java。下载之后,可以直接运行。

    java+jsoup抓取网页数据

    使用java+jsoup进行网页数据的抓取,提取自己想要的数据

    jsoup-1.11.3.jar

    Jsoup 爬虫相关技术,可在java项目中引入jar包,然后使用网页链接进行资源爬取

    jsoup-1.11.2.jar工具类包.rar

    jsoup-1.11.2.jar JsoupXpath-0.3.2.jar jsoup-1.11.2-sources.jar jsoup-1.11.2-javadoc.jar 解析读取xml或html文档的工具类

    安卓listview相关相关-使用jsoup异步抓取新闻数据装载listview(仿开源中国资讯列表.rar

    使用jsoup异步抓取新闻数据装载listview(仿开源中国资讯列表.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。

    JsoupXpath-0.3.2.jar 完整版

    JsoupXpath 是一款纯Java开发的使用xpath解析提取html数据的解析器,针对html解析完整... 为了在java里也享受xpath的强大与方便但又苦于找不到一款足够好用的xpath解析器,故开发了JsoupXpath。(适用于XML快捷查询)

    jsoup-1.10.3-API文档-中英对照版.zip

    赠送源代码:jsoup-1.10.3-sources.jar; 赠送Maven依赖信息文件:jsoup-1.10.3.pom; 包含翻译后的API文档:jsoup-1.10.3-javadoc-API文档-中文(简体)-英语-对照版.zip; Maven坐标:org.jsoup:jsoup:1.10.3; 标签...

    jsoup-1.10.3

    jsoup-1.10.3.jar, jsoup-1.10.3-javadoc,jsoup-1.10.3-sources,相关资源下载。

    jsoup-1.7.3-javadoc

    比如它可以处理: 1 没有关闭的标签 比如: &lt;p&gt;Lorem &lt;p&gt;Ipsum parses to &lt;p&gt;...3 一个Element包含一个子节点集合 并拥有一个父Element 他们还提供了一个唯一的子元素过滤列表 ...

    java-Jsoup爬虫完整代码

    java爬虫完整代码,爬取某东和某电影平台,可以举一反三爬取想要的资源有用信息;利用jsoup跨域请求url地址,利用jQuery选择器选取页面元素,获取想要的信息标签中的内容,转为java对象保存到数据库或者缓存.

Global site tag (gtag.js) - Google Analytics