php基础教程

php实战开发网络爬虫,实现采集功能

2017-10-03  本文已影响40人  寻梦xunm

php实现实时获取当天天气小工具

//获取天气预报网站的网页内容

$html = file_get_contents("http://www.weather.com.cn/weather1d/101210101.shtml");

//正则表达式

$reg = '#hour3data.+?\[".+?,.+?,(?<tianqi>.+?),(?<wendu>.+?),#';

//如果匹配成功,就输出温度相关的信息

if(preg_match($reg, $html, $mat)){

    echo "今天".$mat['tianqi'].",温度".$mat['wendu'];

}

从起点网采集指定的小说章节保存到txt文件

$url = "http://read.qidian.com/chapter/e3dzHPdshCDbhZU9AFSCzA2/JRRO4JeEqtFp4rPq4Fd4KQ2";

$html = file_get_contents($url);

$reg = '#<title>(?<title>.+?)</title>[\s\S]+?<div class="read-content j_readContent">(?<content>[\s\S]*?)</div>#';

if(preg_match($reg, $html, $mat)){

    //print_r($mat);

    $mat['content'] = preg_replace("#<.*?>#","\r\n",$mat['content']);

    echo $mat['title']."\n\n\n\n".$mat['content'];

    file_put_contents($mat['title'].".txt",$mat['content']);

}

根据qq号获取昵称和头像

要求:根据qq账号,在网页中显示出对应的昵称和用户头像。

提示:通过这个地址可以获取到相关信息 http://r.pengyou.com/fcg-bin/cgi_get_portrait.fcg?uins=841116165

提示:此处显示图片有小坑。搜索关键词 “防盗链”

$url = "http://r.pengyou.com/fcg-bin/cgi_get_portrait.fcg?uins=841116165";

$html = file_get_contents($url);

$reg = '#.+?\["(.+?)",.+?,.+?,.+?,.+?,.+?,"(.+?)"#';

if(preg_match($reg, $html, $mat)){

    //由于防盗链,无法直接使用腾讯的头像链接,所以要先下载到本地

    file_put_contents("1.jpg",file_get_contents($mat[1]));

    echo "<img src='./1.jpg' />".$mat[2];

}

根据ip获取地址信息(作业)

用户输入一个ip地址,显示这个ip的地理位置信息。

提示:通过后面的地址即可获取到地址信息 http://ip.chinaz.com/36.24.128.67

答案:

$ip = "36.84.128.67";

$html = file_get_contents("http://ip.chinaz.com/".$ip);

$regex = '#<p class="WhwtdWrap bor-b1s col-gray03">[\s\S]+?<span class="Whwtdhalf w50-0">(.+?)</span>[\s\S]+?</p>#';

if(preg_match($regex, $html, $mat)){

    echo $mat[1];

}

php获取最近7天天气预报信息(作业)

从起点采集一本指定的小说所有的章节内容,合并到一个txt文件。(作业)

提示:先采集列表的url,再循环采集每个章节的内容,追加到文件中。

//ini_set('max_execution_time','0');

$html = file_get_contents("http://book.qidian.com/info/1004608738");

$regex = '#<li data-rid="\d+?"><a href="(.+?)"[\s\S]+?>(.+?)</a>[\s\S]+?</li>#';

if(preg_match_all($regex, $html, $mats)){

    foreach($mats[1] as $k => $v){

        $html1 = file_get_contents("http:".$v);

        $regex1 = '#<div class="read-content j_readContent">([\s\S]+?)</div>#';

        //匹配内容

        if(preg_match($regex1, $html1, $mat)){

            $mat[1] = preg_replace('#<.+?>|\s+?#', "",$mat[1]);

            $content = "\r\n".$mats[2][$k]."\r\n".$mat[1];

            file_put_contents("1.txt", $content, FILE_APPEND);

        } else {

            echo "内容没有匹配成功";

        }

        echo $mats[2][$k]."\n";

    }

}

上一篇下一篇

猜你喜欢

热点阅读