RJ博客

PHP - 网易云音乐个人信息爬取

本文目录

博客首页有个网易云音乐的信息模块,原本本模块隔一段时间手动更新的,后来想着抽空弄个简单的爬虫来实现自动更新,并把爬取的内容存储到文件中,以方便下次读取。

image.png

由于写定是脚本去爬虫的话实时性不高,综合考虑到目前博客pv量不是特别大,于是把爬虫触发条件交给web前端,每次打开首页的时候触发js代码,通过ajax调用后台代码爬虫更新数据,并同步更新到web前端显示。

js代码:

$.ajax({
    url: "http://nearby.wang/cloudMusic.php",
    type: "GET",
    dataType: 'JSONP',
    jsonp: "callback",
    jsonpCallback: "dosomething",
    success: function(result){
	    $('#event_count').html(result.event_count);
	    $('#fan_count').html(result.fan_count);
	    $('#follow_count').html(result.follow_count);
    }
});

php代码:

/**
* 网易云音乐个人信息爬虫
* Author : RJ
* Date   : 20170606
*/
include 'ganon.php'; //爬虫html解析文件
$url = "http://music.163.com/user/home?id=59986101";

$html= file_get_dom($url);

$event_count = $html("#event_count")[0]->getPlainText();
$follow_count = $html("#follow_count")[0]->getPlainText();
$fan_count = $html("#fan_count")[0]->getPlainText();

$data=array();
$data['event_count'] = $event_count;
$data['follow_count'] = $follow_count;
$data['fan_count'] = $fan_count;

//写入配置文件
writeArr($data);
$result   = json_encode($data);
$callback = isset($_GET['callback']) ? $_GET['callback'] : 'null'; // 最好加上判空和默认值,以防拿不到参数
echo $callback."(".$result.")";

//=============================== 函数 ===============================
/**
 * [writeArr 写入配置文件方法]
 * @param  [type]  $arr      [要写入的数据]
 * @param  [type]  $filename [文件路径, 为空则取默认路径]
 * @param  boolean $truncate [是否合并数组,默认是]
 * @return [type]            [description]
 */
function writeArr($arr, $filename, $truncate=true) {
    $filename || $filename = 'cloudMusicInfo.php';

    //检查配置文件是否存在, 没有则创建
    if (!file_exists($filename)) {
        $fp=fopen($filename, "w");
        fwrite($fp, "<?php\r\nreturn array();");
        fclose($fp);
    }

    if ($truncate) {
        $arr_old = include($filename);
        $arr = $arr + $arr_old;  //数组合并
    }

    return file_put_contents($filename, "<?php\r\nreturn " . var_export($arr, true) . ";");
}


Reference:

http://www.cnblogs.com/ido321/p/4082329.html


相关推荐

发表评论