前几天需要用到云展网下载一些书,但是网页没有提供下载按钮。
看了一下代码,比较简单,所以随手写了一个php爬取文件。
用完之后就废弃了,想着也没什么用,就分享给大家。
毕竟是一次性的代码,可能写的比较简陋,相信会有人写出更优雅的,故此代码仅供参考。

1. 在CLI模式下可以把$bookLink改成 $argv[1]
2. $savePath是你的文件保存的临时目录,每次运行会覆盖。
3. 只有$bookLink和$savePath需要修改.

下载好后,文件名是数字顺序排列的JPG文件,可以直接用Adobe DC合并成一个PDF文件。

[PHP] 纯文本查看 复制代码
<?php
$bookLink = \’http://www.yunzhan365.com/12345679.html\’; //你要下载书籍链接
$savePath = \’F:/新建文件夹/真人学习\’; //你的文件保存目录

//以下内容勿修改
$parseBook = cget($bookLink);
$bookInfo = [];
$flag = preg_match(\’/new EmbedPanel[\\s\\S]+title:\\s*"(.*?)"[\\s\\S]+?pages:\\s*"(.*?)"[\\s\\S]+?url:\\s*"(.*?)"/\’, $parseBook, $bookInfo);
if ($flag === 0) {
die(\’未找到书籍信息\’);
}
$bookName = $bookInfo[1]; //书名
$bookUrl = $bookInfo[3]; //书的链接
$totalPage = $bookInfo[2]; //总页数
$imgPath = \’files/mobile/{order}.jpg\’;
echo "书籍名称:$bookName\\n总页数:$totalPage\\n";
fetchAll($bookUrl, $totalPage, $savePath);
// fetch($bookUrl,\’demo.jpg\’);
function fetchAll($bookUrl, $totalPage, $savePath)
{
$imgPath = \’files/mobile/{order}.jpg\’;
$urls = [];
for ($i = 1; $i <= $totalPage; $i++) {
$urls[$i][\’url\’] = $bookUrl . str_replace(\'{order}\’, $i, $imgPath);
$urls[$i][\’name\’] = $savePath . $i . \’.jpg\’;
}
foreach ($urls as $url) {
$content = cget($url[\’url\’]);
if (empty($content)) {
echo $url[\’url\’] . \’下载失败,请重试\’ . "\\n";
continue;
}
if (file_put_contents($url[\’name\’], $content) === false) {
echo $url[\’url\’] . \’保存失败,请重试\’ . "\\n";
continue;
}
echo $url[\’name\’] . \’保存成功\’ . "\\n";
}
}
function fetch($bookUrl, $name, $savePath)
{
$content = cget($bookUrl);
if (empty($content)) {
echo $bookUrl . \’下载失败,请重试\’ . "\\n";
return;
}
if (file_put_contents($savePath . $name, $content) === false) {
echo $url[\’url\’] . \’保存失败,请重试\’ . "\\n";
return;
}
echo $name . "保存成功\\n";
}
function cget($url, $post = \’\’, $cookies = \’\’)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_USERAGENT, \’Nokia5250/10.0.011 (SymbianOS/9.4; U; Series60/5.0 Mozilla/5.0; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/525 (KHTML, like Gecko) Safari/525 3gpp-gba\’);
$post ? curl_setopt($ch, CURLOPT_POSTFIELDS, $post) : null;
$cookies ? curl_setopt($ch, CURLOPT_COOKIE, $cookies) : null;
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
$re = curl_errno($ch) == 0 ? curl_exec($ch) : \’\’;
curl_close($ch);
return $re;
}

本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。

最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。 若排除这种情况,可在对应资源底部留言,或联络我们。

对于会员专享、整站源码、程序插件、网站模板、网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。

如果您已经成功付款但是网站没有弹出成功提示,请联系站长提供付款信息为您处理

源码素材属于虚拟商品,具有可复制性,可传播性,一旦授予,不接受任何形式的退款、换货要求。请您在购买获取之前确认好 是您所需要的资源