Android 数据抓取——在线音乐播放器的实现

前言: 相信很多同学学习android都开做过播放器一类的小玩意吧,但是苦于没有服务器提供数据,因而只能做个本地播放器,今天,这篇文章就是通过数据抓取,实现没有服务器,依然可以在线搜索和播放音乐!

首先,贴上我的最终实现效果:
这里写图片描述

因为数据是从虾米搜索页抓过来的,所以我把虾米logo加上去了,请大家忽略,下面来讲基本思路,首先虾米有这样一个隐藏的API:

http://www.xiami.com/song/playlist/id/
id后面接上歌曲ID就能请求的改id的歌曲信息:
如图所示:
这里写图片描述

所以,我们只需要知道歌曲ID就能获得歌曲信息了,一切都成为可能了,那么问题来了! 我们怎么获取歌曲ID呢?————没错,今天的主角登场
——Jsoup 我们用它去虾米搜索结果抓歌曲ID!
首先我们看看虾米的搜索网址:
这里写图片描述

然后我们对页面审查源代码,我们可以清楚的发现,所有搜索结果是放在一个 名为 track_list的 table中(也就是html表格中),如图所示:
这里写图片描述
我们继续往里面看:
在一个chkbox的 标签里面发现了一串数字,测试之前的我们的接口,果然是相符的,id就是它了!
这里写图片描述

接下来就是写代码了!
首先我们导入jsoup的jar包到我们的项目中 Jsoup下载地址:
Jsoup 需要添加网络权限

/** 搜索关键字地址 */
    public static String KEY_SEARCH_URL = "http://www.xiami.com/search/song?key=";
    /** ID接口地址 */
    public static String ID_SEARCH_URL = "http://www.xiami.com/song/playlist/id/";

    /**
     * 抓取歌曲id
     * 
     * @param 搜索关键词
     * @param listener
     *            完成监听
     */
    public static void getIds(String input, OnLoadSearchFinishListener listener) {
        List<String> allIds = new ArrayList<String>();
        String key = deCondeKey(input);// 解析用户输入关键字为 UTF-8
        Document document = null;
        try {
            document = Jsoup.connect(KEY_SEARCH_URL + key).get();// jsoup连接最终拼接而成的请求字符串
            Elements elements = document.getElementsByClass("track_list");// 选择类标签
            
评论 24
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值