记《斗破苍穹》有声小说爬取

斗破苍穹挺火的,动漫、真人电视剧都出了。看动漫更新太慢了,就想先听小说过过瘾。奈何各大平台都是收费的。毕竟本人是穷屌一个,哪有钱冲VIP~
所以只能通过百度搜索看看有没有免费的!还真给我找到了,毕竟网页版的不方便准备全部下载下来放上传到网盘去听...

准备阶段

分析网页

网址:http://www.ysxs8.com/yousheng/4540_1.html
chrome F12 打开XHR一眼就看到了一个请求mp3的链接

Request URL: http://lrmp3.meiwenfen.com/?url=http%3A%2F%2Fwting.info%2Fasdb%2Ffiction%2Fxuanhuan%2Fdoupocq%2F3tiozb1a.mp3
Request Method: GET
Status Code: 200 OK
Remote Address: 121.63.252.169:80
Referrer Policy: no-referrer-when-downgrade

搜索特征“3tiozb1a.mp3”


发现http://www.ysxs8.com/playdata/188/4540.js?1468.579
这个JS里面包含了斗破的每一集有声,WTF~这么简单

用IDM直接下载

既然全都有了,没必要写脚本下载了,复制所有的内容到notepad++中进行简单的处理,如果不处理就无法直接用IDM下载。

复制到IDM中->任务->从剪贴板中添加批量下载

批量重命名

用IDM下载下来的文件名不是按每集的来命名的,所以用php写了一个脚本

<?php
$url = 'http://www.ysxs8.com/playdata/188/4540.js?1468.579';
$str = file_get_contents($url);
preg_match_all('/\'(.*?)\$flv\'/', $str, $arr);

function unicodeDecode($unicode_str)
{
    $json = '{"str":"' . $unicode_str . '"}';
    $arr = json_decode($json, true);
    if (empty($arr)) return '';
    return $arr['str'];
}

$mp3 = [];
foreach ($arr[1] as $k => $v) {
    $tmp = explode('$', $v);
    $name = str_pad(str_replace(['第', '集'], '', unicodeDecode($tmp[0])), 4, "0", STR_PAD_LEFT);
    $tmp = explode('/', $tmp[1]);
    $file = end($tmp);
    $mp3[$file] = $name;
}

$dir = 'C:\Users\94112\Desktop\斗破苍穹';

foreach (scandir($dir) as $v) {
    if($v!='.' && $v!='..') rename($dir . DIRECTORY_SEPARATOR . $v, $dir . DIRECTORY_SEPARATOR . $mp3[$v] . '.mp3');
}

最后得到

上传网盘收工

总结:说爬取可能说的有点不准确,总之利用手头工具最简单的完成和得到自己想要的结果才是王道