这几天突发奇想开个php爬虫自动download pixiv上的热门图片
于是去Github找了半天没找到合适的项目,要么不能跑要么就是配置太复杂。。
于是自己动手丰衣足食

进度缓慢【趴】目前半自动化
效果如图:
p50.png

具体步骤
首先打开别人的Pixiv趴图教程
从前人的智慧可得每日排行榜页面下拉到一定地步之后,页面会向服务器请求新的数据,可以通过抓包得到请求的地址格 - 式为http://www.pixiv.net/ranking.php?mode=daily&p=2&format=json,分析可得

  • 排行榜的请求地址为http://www.pixiv.net/ranking.php
  • mode的值为daily,代表获取每日排行榜
  • p的值为页数
  • format的值为json,需要服务器以JSON的格式返回数据

截取其中一段是这样的↓

{
"contents": [
    {
        "illust_id": 60807058, 
        "title": "✨Happy New Year✨", 
        "width": 750, 
        "height": 1022, 
        "date": "2017年01月07日 00:24", 
        "tags": [
            "セイバー", 
            "Fate", 
            "Fate/GrandOrder", 
            "Fate/GO", 
            "年賀状", 
            "アルトリア・ペンドラゴン", 
            "極彩色の魔術師", 
            "Fate/GO10000users入り", 
            "尾長鶏"
        ], 
        "url": "http://i3.pixiv.net/c/240x480/img-master/img/2017/01/07/05/27/55/60807058_p0_master1200.jpg", 
        "illust_type": "0", 
        "illust_book_style": "1", 
        "illust_page_count": "1", 
        "illust_upload_timestamp": 1483734475, 
        "user_id": 1577302, 
        "user_name": "weed", 
        "profile_img": "http://i4.pixiv.net/user-profile/img/2010/11/14/04/03/48/2406699_c0ee5f821bde579fdf223a00013f7538_50.jpg", 
        "rank": 1, 
        "yes_rank": 3, 
        "total_score": 46766, 
        "view_count": 42860, 
        "illust_content_type": {
            "sexual": 0, 
            "lo": false, 
            "grotesque": false, 
            "violent": false, 
            "homosexual": false, 
            "drug": false, 
            "thoughts": false, 
            "antisocial": false, 
            "religion": false, 
            "original": false, 
            "furry": false, 
            "bl": false, 
            "yuri": false
        }, 
        "attr": ""
    }, 
}

那这是json,php看不懂啊怎么办?
来一个json_decode(),再数组一下
然后php就看懂喇!
数组里边for循环输出一下
然后写到一个文件,手动运行wget -i 你保存出来的文件名,于是当天top50的缩略图就会咻咻咻地下到电脑里喇!

全部的代码是这样滴:

<?php
$json = file_get_contents("http://www.pixiv.net/ranking.php?mode=daily&p=1&format=json"); //下载当天top 50的json
$a = json_decode($json,true); //解析json
$file = fopen("resule", 'w+'); //创建要写入的文件
for ($count = 0;$count < 49;$count++) //此处依次从地0个URL输出到第49个URL
{
    fwrite($file, $a["contents"]["$count"]["url"]."\r\n"); //保存到文件
}
echo "Get Pixiv top 50 Success.";
?>