批量下载百度贴吧的图片 831张亲测

正文开始

<p>百度贴吧的图片是这样显示的:</p><p>1、用接口输出一段json  <br /></p><p>如:http://tieba.baidu.com/photo/bw/picture/guide?kw=%25E4%25B8%2583%25E9%25BE%2599%25E7%258F%25A0&tid=2567980630&see_lz=1&from_page=0&alt=jview&next=1115&prev=0&pic_id=160ed40735fae6cd1f6560a50eb30f2440a70fc2&_=1510318877014</p><p><br /></p><p>通过 prev 和next来控制当前图片的区间。当然不是设置为最小和最大就能把当前帖子的几百张图片一次输出了,百度没那么simple。它是通过pic_id来控制各个区间的图片的,每隔100张左右就换一个pic_id,防止你一次就可以下载全部url。</p><p>在详情图里翻页,翻到一定程度就会出现新的pic_id。</p><p>当然这样只是麻烦了几次操作而已,一样是手动修改prev 和next 可以5分钟内把所有图片的网址下载下来。但是还要用要 editplus 手动筛选和衔接#233这样的序号。</p><p>2.处理下载到的json文件。</p><p>正则工具:http://tool.oschina.net/regex/# <br /></p><p>提取网址编号:original":{"id":"[^s^"]*"</p><p>得到这样的字符:<br /></p><p>original":{"id":"6875352ac65c10389cb2ea07b3119313b27e89c8"<br />original":{"id":"28c98a13632762d06dda807aa1ec08fa503dc630"</p><p>复制这些字符到 editplus 打开。<br /></p><p>将  original":{"id":" 替换为  http://imgsa.baidu.com/forum/pic/item/</p><p>"  替换为 .jpg</p><p>这时就得到所有的图片网址了,保存为本地down.txt文件。</p> <img src="http://img.li6.cc/content_img/1/article/111/168656717185442.png" alt="" /><br /><p>这时以为用X雷就可以下载了?复制进去,发现下不动。只能用本地php下载了。</p><p>写个脚本读取这个txt文件,js循环。</p><p>代码如下</p><p><br /></p><pre><?php require_once( dirname(__DIR__) ."/config.php");//系统参数配置 error_reporting(E_ALL); set_time_limit(0); $downFileUrl = 'down.txt'; if(!file_exists($downFileUrl)) { message::Show($downFileUrl.'文件不存在'); exit; } $content = file_get_contents($downFileUrl); $contentArray = explode(PHP_EOL, $content); $to_id = isset($_GET['to_id']) ? $_GET['to_id'] : 0; $url = isset($contentArray[$to_id]) ? $contentArray[$to_id] : ''; if(!$url) { message::Show('已经完成'); exit; } $fileName= basename($url); $fileContent = file::get_nr($url); file_put_contents($fileName, $fileContent); $to_id ++; //header("location: ?to_id={$to_id}"); ?> <script> setTimeout(function () { window.location = "?to_id=<?=$to_id?>"; }, 500); </script></pre> 运行效果。<br /><p> <img src="http://img.li6.cc/content_img/1/article/111/512982439182458.png" alt="" width="500" /><br /></p><p> <br /></p><p><br /></p>

正文结束

阿里云、腾讯云 apache的vhost配置https linux crontab 定时任务