通过解析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:强大的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.jarjsoup-...
**Jsoup API 深入解析** Jsoup 是一个用于处理和解析HTML的Java库,它提供了强大的功能,使得在Java程序中操作HTML文档变得简单而直观。在Jsoup 1.10.2版本中,这个API进一步优化了对HTML的处理能力,提供了丰富的...
4. **jsoup-1.10.2-sources.jar**:这个文件包含的是1.10.2版本的源代码,开发者可以通过查看源码来深入了解jsoup的实现细节和工作原理。 总的来说,jsoup是Java开发者处理HTML文档的强大工具,无论是进行网页抓取...
JSoup支持通过URL直接连接到网页并下载HTML内容。通过`Jsoup.connect()`方法,你可以设置HTTP请求头、超时时间,并处理重定向。例如: ```java Document doc = Jsoup.connect("http://example.com").get(); ``` **...
jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。 1. 从一个URL,文件或字符串中解析HTML; 2. 使用...
Jsoup一款Java版数据挖掘工具,该资源包提供一键下载网络资源到本地 只需一个url 可携带cookie 携带自定义请求头 模拟用户操作
官方文档地址http://jsoup.org/cookbook/提供了丰富的使用实例,涵盖了jsoup的基本功能和高级用法。这些实例可以帮助初学者快速上手,也能为有经验的开发者提供解决方案参考。实例包括但不限于: 1. **解析HTML文档...
Jsoup 提供 DOM 风格的方法(如 `getElementById()`, `getElementsByTag()`, `select(String cssQuery)` 等)来遍历 Document 对象并抽取所需数据。例如,你可以通过 CSS 选择器选取元素,然后提取它们的属性、文本...
**jsoup库详解** jsoup是一个Java库,用于处理实际世界中的HTML。它提供了一种易于使用的API,用于提取和操作数据,具有浏览器一样的...通过`jsoup-1.12.1.jar`文件,开发者可以轻松集成并开始利用jsoup的强大功能。
赠送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...
- **Web抓取**:通过jsoup,开发者可以编写程序来爬取网站上的特定信息,如价格、评论、文章等。 - **数据挖掘**:提取大量网页数据进行分析,如搜索引擎索引、市场研究等。 - **网站迁移**:将旧版网站的内容迁移到...
Jsoup能够连接到网站,下载HTML内容,然后通过强大的解析器将其转换为一个可操作的DOM对象。这个DOM对象可以被遍历和修改,就像在浏览器中的JavaScript那样。最后,Jsoup可以将修改后的DOM重新格式化并输出回HTML。 ...
1. **网页爬虫**:通过Jsoup抓取网页上的结构化数据,如商品价格、评论、新闻标题等。 2. **内容提取**:从HTML文档中提取特定内容,例如提取文章正文,去除广告或格式化文本。 3. **网站自动化**:模拟浏览器行为,...
Jsoup能够解析HTML字符串或者从URL直接下载HTML内容,然后通过CSS选择器来提取数据,实现网页信息的抓取。 2. **核心功能**: - **HTML解析**:Jsoup支持HTML5标准,能准确解析各种复杂的HTML结构,包括不规范的...
**jsoup.jar与jsoup中文API** `jsoup`是一个非常强大的Java库,它主要用于处理实际世界中的HTML。它的设计灵感来源于DOM、CSS以及jQuery,提供了简单易用的API,使得解析、提取以及修改HTML内容变得轻而易举。jsoup...
**JSoup库详解** JSoup是一个Java库,它设计用于处理和解析HTML,为Web抓取和数据提取提供了强大而方便的功能。这个“jsoup包.zip”包含了两个版本的JSoup JAR文件:jsoup-1.11.3.jar和jsoup-1.8.3.jar。这两个版本...
jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。 jsoup的主要功能如下: 1. 从一个URL,文件或字符...
6. **网络连接**:JSoup可以直接通过`Jsoup.connect(url).get()`建立HTTP连接并下载HTML内容,简化了网页抓取的过程。 ### HTMLParser的替代原因 HTMLParser虽然也是一个强大的HTML解析库,但由于长时间未更新,...