利用js实时抓取数据进行UI换壳

抓取别人的网页内容为自己所用,快来看看这种前端的奇技淫巧...

先看一眼效果:


左边的是我写的,右边的是酷狗手机网页,除了换了层皮,是不是赶脚一毛一样?没错,数据全是爬取的,啦啦啦...
在线地址:http://www.xi-g.com/mc.html

原理其实很简单,就是利用ajax直接去请求别人的网页,然后拿到html的文本,从中提取和整理自己所需要的数据。
但是如果你真的直接用ajax去get别人的网页,你会尴尬的发现跨域了...所以需要代理,先用自己的服务器去请求别人的网页,再丢出来......
最简单的代理是用php来做,虚拟主机就能跑起来,只需要几行即可:

<?php 
// 允许所有域访问
header("Access-Control-Allow-Origin: *");
// 接收一个参数,参数名叫url
$url = $_GET['url'];
// 获取这个网页的html
$res = file_get_contents($url);
// 输出这个html
echo $res;
?>

如果你暂时搞不定代理,我这里提供一个get的代理接口:

http://www.xi-g.com:4000/agent_api
参数名是url,参数内容必须是http打头,例如:
http://www.xi-g.com:4000/agent_api?url=http://m.kugou.com
点这个连接,就会打开 http://m.kugou.com 这个网页的内容

有了代理之后,接下来我们来发起ajax请求:

// 调个ajax
$.ajax({ 
    type:'get',
    url: 'http://www.xi-g.com:4000/agent_api?url=http://m.kugou.com',
    success: function(data) {
        // 打印看看是个什么玩意
        console.log(data);
    }
});

打印结果:



我们已经把整个酷狗首页的html字符串拿到了,接下来是重点,怎么提取数据:

$.ajax({ 
    type:'get',
    url: 'http://www.xi-g.com:4000/agent_api?url=http://m.kugou.com',
    success: function(data) {
        // 创建一个div的盒子存起来
        var div = document.createElement('div');
        // 把整个html的字符串存到这个div节点里
        div.innerHTML = data;
        // 分析html结构后,把类名为.panel-songslist-item的元素全部存到list变量里
        // querySelectorAll()以数组形式返回所有匹配节点
        var list = div.querySelectorAll('.panel-songslist-item');
        // 定义一个空数组
        var songList = [];
        // 遍历list提取歌单数据,整理格式
        for(var i = 0; i<list.length; i++){
            // 定义空对象
            var song = {};
            // 查找类名为.panel-songs-item-name的元素里的span节点里的文本存到song.title属性
            song.title = list[i].querySelector('.panel-songs-item-name span').textContent;
            // 取到每个list元素的id值
            song.hash = list[i].id.substr(6);
            // 把song对象推入songList数组
            songList.push(song);
        }
        // 我们来打印songList这个对象数组看看
        console.log(songList);
    }
});

打印结果:



现在我们就把酷狗首页的歌单数据给拿到了,只要拿到数据就能构建我们的页面了,是不是十分神奇,关键点还是对querySelectorAll()和querySelector()这两个方法的运用,根据id名、class名、标签名来查找元素提取数据。
我们再来提取一下歌单页面的数据,还是老方法,但是需要仔细分析页面才能提取到我们想要的数据:


$.ajax({ 
    type:"get",
    url: "http://www.xi-g.com:4000/agent_api?url=http://m.kugou.com/plist/index",
    success: function(data) {
        var div = document.createElement('div');
        div.innerHTML = data;
        var list = div.querySelectorAll('.panel-img-list li');
        var plistList = [];
        for(var i = 0; i<list.length; i++){
            var plist = {};
            plist.imgUrl = list[i].querySelector('.panel-img-left img').getAttribute('_src');
            plist.plistName = list[i].querySelector('.panel-img-content-first').textContent;
            plist.plistNum = list[i].querySelector('.panel-img-content-sub').textContent;
            plist.location = "plist/list/"+list[i].querySelector('a').href.substr(30);
            plistList.push(plist);
        }
        console.log(plistList);
     }
});

打印结果:


就是这么简单,小伙伴们学会了没有,赶紧去试着抓取几个新闻页面的数据来玩玩吧~
我给大家推荐一个练习的网站:

深圳新闻网:http://m.sznews.com/
每一条新闻都是带a标签链接的,根据这个链接我们可以进行二次爬取,即从列表页爬进详情页...

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 207,113评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,644评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,340评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,449评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,445评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,166评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,442评论 3 401
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,105评论 0 261
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,601评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,066评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,161评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,792评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,351评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,352评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,584评论 1 261
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,618评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,916评论 2 344