发新帖

获取廖雪峰老师的Python3教程的php脚本

hk 2015-9-13 5924

昨天一个朋友问我能否帮忙下载廖雪峰老师的python3教程,于是便写了这个php脚本。
在这里非常感谢廖雪峰老师的辛苦努力。

<?php
/**
* 获取Python3教程
* 感谢廖雪峰老师
* 教程地址: http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000
* 命令行下运行
* @AUTHOR: 杨永全
* @E-mail: qt06.com@139.com
* @URL: http://www.qt.hk/
* WEIBO: http://weibo.com/qt06
*/

$base_url = "http://www.liaoxuefeng.com";

 //获取教程目录页面
$s = file_get_contents("http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000");

//匹配出包含教程目录的html片段
preg_match('#<ul class="uk-nav uk-nav-side" style="margin-right:-15px;">(.*?)</ul>#is', $s, $rs);
$s1 = $rs[1];

//匹配出目录列表
preg_match_all('#<a href="(.*?)">(.*?)</a>#is', $s1,$list);

$cnt = count($list[1]);
for($i=0;$i< $cnt;$i++) {

    //命令行打印章节标题和地址
    echo iconv('utf-8', 'gbk', $list[2][$i] . ',' . $list[1][$i]), "\r\n";

    //需要保存的文件名
    $filename = iconv('utf-8', 'gbk', ($i + 1) . ' ' . $list[2][$i] . '.txt');

    //获取教程详细内容
    $s = file_get_contents($base_url . $list[1][$i]);

    //匹配出详细内容
    preg_match('#<div class="x-wiki-content">(.*?)</div>.*?<hr>#is',$s,$rs);
    $s = $rs[1];

    //过滤html标记,并适当处理空行
    $s = str_replace(">\n<",">\n\n<",$s);
    $s = strip_tags($s);
    $s = str_replace("\n\n\n", "\n\n", $s);
    $s = str_replace("\n\n\n", "\n\n", $s);
    $s = str_replace("\n\n\n", "\n\n", $s);

    //可能会有副作用,导致代码中的\\n被处理
    $s = str_replace("\n", "\r\n", $s);

    //处理html实体字符
    $s = str_replace('&gt;', '>', $s);
    $s = str_replace('&#39;','\"', $s);

    //保存到当前目录,windows的文件名必须是gbk
    file_put_contents($filename, $s);
}

//弹出对话框提示完成
passthru("mshta javascript:alert('finished.".$cnt."');window.close();");

可随时联系我:qq/微信/微博 135
最新回复 (0)
返回
发新帖
hk
主题数
376
帖子数
2
注册排名
1