`
jackzlz
  • 浏览: 141271 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

通过Jsoup获得top100下载地址后台下载mp3

 
阅读更多

  通过解析top100的页面获得歌曲的下载地址,后台下载歌曲。比较粗糙,有时会报

 

  java.net.SocketTimeoutException: Read timed out

 

  找了很久,不知道什么原因。需要jsoup支持

 

  jsoup下载地址:

 

  http://jsoup.org/download

 

  代码如下:

 

 

import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;


public class GetTop100 {
	public static void main(String[] args) throws Exception{
		String keyword = "B小调雨后";
		boolean isDownload = true;
		String encodeKeyword = URLEncoder.encode(keyword, "UTF-8");
		String searchUrl = "http://www.top100.cn/search/?act=allsong&keyword=" + encodeKeyword;
		String downloadpageurl = getDownloadPageFromURL(searchUrl);
		if (isEmpty(downloadpageurl)) {
			System.out.println("没有找到" + keyword + "!");
			System.exit(0);
		} else {
			System.out.println("找到了" + keyword);
		}
		if (!isDownload) return;
		String downloadUrl = getDownloadUrl(downloadpageurl);
		System.out.println(downloadUrl);
		String filename = "C:\\" + keyword + ".mp3";
		downLoadMp3FromUrl(downloadUrl, filename);
		System.out.println("完成");
	}
	
	static String getDownloadPageFromURL(String url) throws Exception {
		System.out.println(url);
		//String url = "http://www.top100.cn/search/?act=allsong&keyword=%E5%A4%9C%E5%A4%9C%E5%A4%9C%E5%A4%9C";
		Document document = Jsoup.connect(url).get();
		Element searchTopDiv = document.getElementsByClass("listen_search_top").get(0);
		Elements resultDivs = searchTopDiv.getElementsByTag("div");
		if (!resultDivs.isEmpty()) {
			String msg = resultDivs.get(0).text();
			if (msg.contains("没有找到")) {
				return null;
			}
		}
		if (!searchTopDiv.text().contains("含有")) {
			return null;
		}
		Elements no5s = document.getElementsByClass("No5");
		Element no5 = no5s.first();
		Element down = no5.getElementsByClass("down").first();
		String href = down.attr("href");
		String productid = href.substring(href.indexOf("'") + 2, href.lastIndexOf("'"));
		String downloadpageurl = "http://www.top100.cn/download/download.php?Productid=" + productid ;
		return downloadpageurl;
	}
	static String getDownloadUrl(String url) throws Exception{
		Document document = Jsoup.connect(url).get();
		Elements downloadDiv = document.getElementsByClass("Listen_downloadtopcon");
		Element no6 = downloadDiv.get(0).getElementsByClass("No6").get(0);
		Element a = no6.getElementsByTag("a").get(0);
		String href = a.attr("href");
		String downloadUrl = "http://www.top100.cn" + href;
		return downloadUrl;
	}
	static void downLoadMp3FromUrl(String downloadUrl, String filename) throws Exception{
		URL download = new URL(downloadUrl);
		URLConnection con = download.openConnection();
		InputStream is = con.getInputStream();
		byte[] bs = new byte[1024];
		int len;
		OutputStream os = new FileOutputStream(filename);
		while((len = is.read(bs)) != -1) {
			os.write(bs, 0, len);
		}
		os.close();
		is.close();
	}
	static boolean isEmpty(Object object) {
		if (object == null) {
			return true;
		} else if (object instanceof String) {
			if (object == null || object.toString().length() == 0) {
				return true;
			}
		}
		return false;
	}
}
 

 

 

分享到:
评论

相关推荐

    jsoup常用包下载

    **jsoup:强大的HTML解析库** jsoup是一个用于处理实际世界HTML的Java库。...这个库的设计灵感来源于jQuery,因此,如果你熟悉jQuery的...通过jsoup1.8版本,你可以享受到稳定性和性能的优化,进一步提升你的开发效率。

    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-...

    JsoupAPI(jsoup帮助文档)

    **Jsoup API 深入解析** Jsoup 是一个用于处理和解析HTML的Java库,它提供了强大的功能,使得在Java程序中操作HTML文档变得简单而直观。在Jsoup 1.10.2版本中,这个API进一步优化了对HTML的处理能力,提供了丰富的...

    jsoup 1.10.2 和 1.8.1包下载

    4. **jsoup-1.10.2-sources.jar**:这个文件包含的是1.10.2版本的源代码,开发者可以通过查看源码来深入了解jsoup的实现细节和工作原理。 总的来说,jsoup是Java开发者处理HTML文档的强大工具,无论是进行网页抓取...

    jsoup-jar包

    JSoup支持通过URL直接连接到网页并下载HTML内容。通过`Jsoup.connect()`方法,你可以设置HTTP请求头、超时时间,并处理重定向。例如: ```java Document doc = Jsoup.connect("http://example.com").get(); ``` **...

    jsoup-1.8.8.jar 包下载

    jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。 1. 从一个URL,文件或字符串中解析HTML; 2. 使用...

    jsoup写下载.txt

    Jsoup一款Java版数据挖掘工具,该资源包提供一键下载网络资源到本地 只需一个url 可携带cookie 携带自定义请求头 模拟用户操作

    2010最新解析html开源项目jsoup源码及api下载及jsoup.jar

    官方文档地址http://jsoup.org/cookbook/提供了丰富的使用实例,涵盖了jsoup的基本功能和高级用法。这些实例可以帮助初学者快速上手,也能为有经验的开发者提供解决方案参考。实例包括但不限于: 1. **解析HTML文档...

    jsoup中文帮助文档

    Jsoup 提供 DOM 风格的方法(如 `getElementById()`, `getElementsByTag()`, `select(String cssQuery)` 等)来遍历 Document 对象并抽取所需数据。例如,你可以通过 CSS 选择器选取元素,然后提取它们的属性、文本...

    jsoup-1.12.1.rar

    **jsoup库详解** jsoup是一个Java库,用于处理实际世界中的HTML。它提供了一种易于使用的API,用于提取和操作数据,具有浏览器一样的...通过`jsoup-1.12.1.jar`文件,开发者可以轻松集成并开始利用jsoup的强大功能。

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

    赠送jar包:jsoup-1.14.3.jar; 赠送原API文档:jsoup-1.14.3-javadoc.jar; 赠送源代码:jsoup-1.14.3-sources.jar; 赠送Maven依赖信息文件:jsoup-1.14.3.pom; 包含翻译后的API文档:jsoup-1.14.3-javadoc-API...

    jsoup-1.8.1.jar

    - **Web抓取**:通过jsoup,开发者可以编写程序来爬取网站上的特定信息,如价格、评论、文章等。 - **数据挖掘**:提取大量网页数据进行分析,如搜索引擎索引、市场研究等。 - **网站迁移**:将旧版网站的内容迁移到...

    Jsoup

    Jsoup能够连接到网站,下载HTML内容,然后通过强大的解析器将其转换为一个可操作的DOM对象。这个DOM对象可以被遍历和修改,就像在浏览器中的JavaScript那样。最后,Jsoup可以将修改后的DOM重新格式化并输出回HTML。 ...

    Jsoup库文件;Jsoup解析Java包

    1. **网页爬虫**:通过Jsoup抓取网页上的结构化数据,如商品价格、评论、新闻标题等。 2. **内容提取**:从HTML文档中提取特定内容,例如提取文章正文,去除广告或格式化文本。 3. **网站自动化**:模拟浏览器行为,...

    Jsoup工具jar包

    Jsoup能够解析HTML字符串或者从URL直接下载HTML内容,然后通过CSS选择器来提取数据,实现网页信息的抓取。 2. **核心功能**: - **HTML解析**:Jsoup支持HTML5标准,能准确解析各种复杂的HTML结构,包括不规范的...

    jsoupjar+jsoup中文API

    **jsoup.jar与jsoup中文API** `jsoup`是一个非常强大的Java库,它主要用于处理实际世界中的HTML。它的设计灵感来源于DOM、CSS以及jQuery,提供了简单易用的API,使得解析、提取以及修改HTML内容变得轻而易举。jsoup...

    jsoup包.zip

    **JSoup库详解** JSoup是一个Java库,它设计用于处理和解析HTML,为Web抓取和数据提取提供了强大而方便的功能。这个“jsoup包.zip”包含了两个版本的JSoup JAR文件:jsoup-1.11.3.jar和jsoup-1.8.3.jar。这两个版本...

    jsoup 1.7.1API chm

    jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。 jsoup的主要功能如下: 1. 从一个URL,文件或字符...

    jsoup网页内容分析

    6. **网络连接**:JSoup可以直接通过`Jsoup.connect(url).get()`建立HTTP连接并下载HTML内容,简化了网页抓取的过程。 ### HTMLParser的替代原因 HTMLParser虽然也是一个强大的HTML解析库,但由于长时间未更新,...

Global site tag (gtag.js) - Google Analytics