爬虫爬取的网易云热门歌单
爬虫爬取的网易云热门歌单
旺仔没馒头 发表于3个月前
爬虫爬取的网易云热门歌单
  • 发表于 3个月前
  • 阅读 12
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 新注册用户 域名抢购1元起>>>   

摘要: 从网上看到了一个java爬虫的教学,觉得挺有意思,就用来爬取一下网易云歌单,看一下什么歌单播放次数最多。

介绍

从网上看到了一个java爬虫的教学,觉得挺有意思,就用来爬取一下网易云歌单,看一下什么歌单播放次数最多。利用Jsoup可以很轻松的对内容进行提取,有点类似于Jquery选择器的语法,利用HttpClient能够轻松的发送请求。然后就顺便把爬取的流行和民谣的歌单爬到了数据库,由于全部爬取数据量太大,所以只是爬取的前8页的歌单。
利用一下代码可以获取到网页内容的输入流。

HttpClient hc = new DefaultHttpClient();
HttpGet hg = new HttpGet(url_str);
HttpResponse response = hc.execute(hg);
HttpEntity entity = response.getEntity();
InputStream htm_in = entity.getContent();

通过自己定义的方法,将输入流转换为字符串

public static String InputStream2String(InputStream in, String encoding) throws Exception {
	StringBuffer out = new StringBuffer();
	InputStreamReader inread = new InputStreamReader(in, encoding);

	char[] b = new char[4096];
	for (int n; (n = inread.read(b)) != -1;) {
		out.append(new String(b, 0, n));
	}

	return out.toString();
}

得到了内容后便可以用Jsoup解析,通过浏览器自带的开发者工具,分析选取哪一个<div>里面的内容

Document doc = Jsoup.parse(htm_str);
Elements links = doc.select("div[class=g-bd]")
.select("div[class=g-wrap p-pl f-pr]")
.select("ul[class=m-cvrlst f-cb]")
.select("div[class=u-cover u-cover-1");

for (Element link : links) {
	Elements lin = link.select("a");
	String re_url = lin.attr("href");
	String re_title = lin.attr("title");
	System.out.print(re_title + "       ");
	System.out.print(re_url + "       ");
}

最后分享一下爬取的民谣和流行的歌单(都是播放排行前5的)。
流行
你知道思念一个人的滋味吗 点我
一首歌让你回到中学时代 点我
将回忆酿成烈酒入喉 从此不再挽留不再回头 点我
华语|那些温暖男声听起来总让人心疼 点我
2016年度最热新歌TOP100 点我
民谣
如果你想听民谣,可以从这些歌曲开始。 点我
孤独旅人配民谣。 点我
民谣是最安静的角落 点我
你若听过他的歌,此生便有了挂念 点我
华语女声丨若失意时 让这些歌给你一个拥抱 点我

标签: Java
共有 人打赏支持
粉丝 2
博文 10
码字总数 7962
×
旺仔没馒头
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: