`
ice123456
  • 浏览: 26905 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

抓出soso音乐信息

阅读更多
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;

public class SongList {
	//歌手列表
	private List<Song> songList;
	
	//当前页面最大分页数
	private int maxPage = 2;
	
	//是否取得页面最大分页数
	private boolean bool = false;
	
	//已添加的歌曲信息
	private HashSet<String> sondListed = new HashSet<String>();
	
	public SongList(String singer){
		this.songList = spiderBySinger(singer);
	}
	
	public List<Song> getSongList(){
		return songList;
	}

	/**
	 * 根据歌手名称去爬页面,取得歌曲信息
	 */
	private List<Song> spiderBySinger(String singer){
		ArrayList<Song> sosoList = new ArrayList<Song>();
		Spider spider = new Spider();
		for (int i = 1; i < maxPage ;i++){
			String content = spider.getURLContentByUrl("http://music.soso.com/music.cgi?w=" + singer + "&pl=&co=&ch=s.m.res&sc=mus&sz=&clz=wma&pg="+i);
			setMaxPageByContent(content);
			sosoList.addAll(this.getSongListByContent(content));
		}
		sondListed.clear();
		return sosoList;
	}
	
	/**
	 * 根据内容设置当前页面最大分页数
	 */
	private void setMaxPageByContent(String content){
		if (!bool){
			String s = ContentPattern.getStringByContentPattern(content, "<script language=\"javascript\">splitResNum(.*?);</script>");
			if (s != null && !s.equals("")){
				s = Replace.YYReplace(s, "(", "");
				s = Replace.YYReplace(s, ")", "");
				int i = Integer.parseInt(s)/20 + 1;
				if (i > 50){
					maxPage = 50;
				}else{
					maxPage = i;
				}
			}
			bool = true;
		} 
	}

	/**
	 * 获得歌曲列表
	 */
	private ArrayList<Song> getSongListByContent(String content){
		ArrayList<Song> list = new ArrayList<Song>();
		Iterator<String> iterator = ContentPattern.getListByContentPattern(content, "<form id=(.*?)<tr>").iterator();
		while(iterator.hasNext()){
			Song song = getSongByContent(iterator.next());
			if (song.getName() == null){
			}else{
				list.add(song);
			}
		}
		return list;
	}

	/**
	 * 根据页面内容提取歌曲信息
	 */
	private Song getSongByContent(String content){
		Song song = new Song();
		//获得歌曲名称
		String name = ContentPattern.getStringByContentPattern(content, "name=\"song\"\\s+value=\"(.*?)\">");
		//判断是否已添加此歌曲
		if(sondListed.contains(name.trim())){
			return song;
		}else{
			sondListed.add(name.trim());
			//获得歌曲文件地址
			String address = ContentPattern.getStringByContentPattern(content, "name=\"url\"\\s+value=\"(.*?)\">");
			//获得歌手
			String singer = ContentPattern.getStringByContentPattern(content, "name=\"singer\"\\s+value=\"(.*?)\">");
			//获得专辑
			String special = ContentPattern.getStringByContentPattern(content, "name=\"album\"\\s+value=\"(.*?)\">");
			song.setAddress(address);
			song.setName(name);
			song.setSpecial(special);
			song.setSinger(singer);
			return song;
		}
	}
}

import java.util.HashSet;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class ContentPattern {
	/**
	 * 获得列表根据原内容和正则表达式
	 */
	public static HashSet<String> getListByContentPattern(String content, String pattern){
		HashSet<String> list = new HashSet<String>();
		// 用正则表达式编译链接的匹配模式。
		Pattern p = Pattern.compile(pattern, Pattern.CASE_INSENSITIVE);
		Matcher m = p.matcher(content);
		while(m.find()){
			String s = m.group(1).trim();
			if(!list.contains(s))
				list.add(s);
		}
		return list;
	}

	/**
	 * 内容,根据内容和正则表达式
	 */
	public static String getStringByContentPattern(String content, String pattern){
		String s = "";
		// 用正则表达式编译链接的匹配模式。
		Pattern p = Pattern.compile(pattern, Pattern.CASE_INSENSITIVE);
		Matcher m = p.matcher(content);
		if(m.find()){
			s = m.group(1).trim();
		}
		return s;
	}
}

public class Song {
	//歌曲名称
	private String name;
	
	//歌手名
	private String singer;
	
	//专辑
	private String special;
	
	//地址
	private String address;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getSinger() {
		return singer;
	}

	public void setSinger(String singer) {
		this.singer = singer;
	}

	public String getSpecial() {
		return special;
	}

	public void setSpecial(String special) {
		this.special = special;
	}

	public String getAddress() {
		return address;
	}

	public void setAddress(String address) {
		this.address = address;
	}
}
  • mp3.rar (3 KB)
  • 描述: 全部源码
  • 下载次数: 71
分享到:
评论
2 楼 kunming 2008-08-11  
我刚看了你的程序,可我不会用啊!如果我想得到刘德华的所有信息,我应该如何写代码啊!小弟菜鸟,请大哥指点!
1 楼 ice123456 2007-11-07  
希望有什么修改意见提出来 谢谢

相关推荐

    如何在QQ空间免费添加背景音乐(网络音乐)全过程.doc

    你可以使用“搜搜音乐”(http://music.soso.com/)或者“百度音乐”(http://mp3.baidu.com/)来寻找你喜欢的歌曲。在搜索框中输入歌曲名或歌手名,选择MP3格式,然后点击“搜索”。在搜索结果中,试听找到的歌曲,...

    qq音乐2021怎么设置空间背景音乐.docx

    如果你需要从网络上寻找歌曲地址,可以访问如百度音乐(http://mp3.baidu.com/)或搜搜音乐(http://music.soso.com/)这样的平台。在搜索框内输入你想添加的歌曲名或歌手名,选择MP3格式,然后进行试听。在试听...

    Excel工具-SoSo插件_excel_excelSOSO_soso

    标题中的“Excel工具-SoSo插件_excel_excelSOSO_soso”暗示了这是一个关于Excel增强功能的插件,特别是针对需要高效处理数据的用户。SoSo插件可能提供了额外的函数、自动化工具或者数据分析功能,以提升Excel的实用...

    SOSO B.E. Beta 5.1 刷搜搜经验必备工具

    Beta 5.1 刷搜搜经验必备工具"表明这是一个针对SOSO搜索引擎的经验获取工具的测试版本。这个工具的主要功能是帮助用户自动刷取在搜搜平台上的搜索和点击经验,从而可能提高用户的账号等级或者获得某种奖励。 描述...

    搜搜移动大厅源码

    【搜搜移动大厅源码】是一个关于开发移动应用的项目,主要使用Java语言编写,针对的是Soso(可能是指搜索引擎SOSO或者类似的平台)的移动端功能实现。这个源码库包含了详细的编程指导和每行代码的注释,对于学习和...

    支持网易云、腾讯音乐等多平台的音乐播放软件

    综合以上信息,我们可以推测这款软件是一个集成式音乐播放器,它整合了网易云音乐、腾讯音乐等多个平台的内容,通过一个统一的界面提供服务。用户可以通过下载并运行"soso.music.Setup.1.3.0.exe"进行安装,而"有...

    搜搜搜信息采集专家 1.0 中文免费版 对特定网站的新闻进行采集

    《搜搜搜信息采集专家1.0中文免费版:高效新闻采集工具详解》 在数字化信息时代,数据的获取和处理成为了企业和个人获取竞争优势的重要手段。"搜搜搜信息采集专家1.0中文免费版"是一款针对特定网站新闻进行采集的...

    soso地图API实例

    SOSO地图API是腾讯地图提供的一个功能丰富的地理信息系统开发工具包,允许开发者在网页中嵌入地图,并提供了一系列的地图操作和地理编码服务。本文将通过一个具体的实例来详细解析SOSO地图API的应用方法,帮助读者...

    搜搜搜软件搜索引擎 v1.0

    《搜搜搜软件搜索引擎 v1.0:网页信息检索与数据库管理详解》 "搜搜搜软件搜索引擎 v1.0"是一款专为用户提供网页搜索功能的工具,它整合了先进的信息检索技术,能够自动在互联网上抓取相关数据并将其存储至数据库中...

    Soso地图API

    总的来说,Soso地图API为开发者提供了丰富的地图功能,结合C#的编程能力,可以构建出各种地图应用,如导航系统、地理信息系统、位置服务等。正确理解和使用Soso地图API,可以让开发者在开发过程中事半功倍,提高效率...

    canon and soso

    描述中的 "canon and soso canon and soso canon and soso" 看起来像是重复强调,但没有提供具体信息。这可能是为了唤起某种音乐氛围,或者是在描述音乐作品中反复出现的主题或情感。 标签 "canon and soso" 进一步...

    google搜搜 源代码

    2. 脚本之家.url:.url文件通常用于存储网页链接,这个文件可能指向一个关于Google搜搜源代码的讨论、教程或者资源页面,提供更深入的信息和上下文。 3. 服务器软件.url:同样,这个文件可能链接到一个与搜索引擎...

    SOSO

    【标题】"SOSO"可能是指某种特定的天文现象或者天文学研究的代号,但没有明确的信息来解析这个标题的确切含义。不过,我们可以从"天体观测"这一主题出发,深入探讨天文学的一些核心知识点。 天体观测是天文学的基础...

    搜搜移动大厅(XML/序列化/IO流实现)

    在“搜搜移动大厅”中,XML可能被用来存储和传递应用程序的配置信息、用户设置或者数据交换格式。XML的优点在于其结构清晰、易于解析,并且是跨平台的,因此适合在不同的系统之间进行数据通信。 序列化是将对象的...

    VB 音乐盒源码 网络音乐播放器

    2.后台搜歌引擎共3套,sogou(搜狗),baidu(百度),以及soso(搜搜). 3.歌词引擎2套,分别来自红叶歌词网和百度. 4.写真系统包括桌面壁纸,套图,qq头像等,后台主引擎默认为sogou. 5.专辑列表功能,后台数据取自搜狗音乐大本...

    soso搜索引擎系统源码

    在这个系统中,"SOSO"(可能是"搜搜"的拼音缩写)采用了百度数据库作为其数据来源,这意味着它依赖于百度已经爬取并处理过的海量网页信息。这种设计可以避免重复抓取工作,节省计算资源,并利用百度的数据优势提供更...

    【Word 插件】Word工具 SoSo 1.0 20230807.zip

    基于以上信息,我们可以预期Word工具 SoSo 1.0可能涵盖以下功能和知识点: 1. **便捷操作**:插件可能提供了快速访问的工具栏或者快捷键,使用户能一键完成常用操作,如格式调整、图片处理、文字替换等。 2. **...

    Java初级项目SOSO/搜搜移动大厅

    【Java初级项目SOSO/搜搜移动大厅】是一个适合初学者进行实践的Java编程项目,旨在帮助学习者掌握基础的Java技术,并了解如何应用于实际的业务场景中。在这个项目中,你将有机会运用到Java语言的核心特性,如类、...

    怎样添加qq空间背景音乐,QQ空间怎么免费添加背景音乐.docx

    你可以通过搜索引擎如SOSO或百度来查找你想要的歌曲,并复制其在线链接。确保链接中不包含特殊字符,如"="、"%"、"'"等。 2. 如果你的空间没有安装播放器,你仍然可以在主页工具条上的播放器中播放音乐,但可能需要...

    【Excel-首次装】Excel工具-SoSo 12.0(带环境)20231210 (1).zip

    这些文档通常会列出系统需求、安装过程中的注意事项、可能遇到的问题及解决方法,对于初学者尤其有用。 最后,"一些问题解答" 文件可能是常见问题和解决方案的集合,包含了用户在使用SoSo 12.0时可能会遇到的疑惑,...

Global site tag (gtag.js) - Google Analytics