php通过curl单独抓取网页可以,抓取多个会出错
伊谢尔伦
伊谢尔伦 2017-04-10 16:05:35
[PHP讨论组]

使用curl单独抓取http://jobs.hubu.edu.cn/Detail.aspx?ArticleChannelId=81&ArticleId=5722可行,但是如果抓取相同类型的一系列网站就会出错,将他们放在数组
$linkList中,分别是http://jobs.hubu.edu.cn/Detail.aspx?ArticleChannelId=81&ArticleId=5722, http://jobs.hubu.edu.cn/Detail.aspx?ArticleChannelId=81&ArticleId=5325等等。

function getJobsHubuNotice()

{
            
    $curl = curl_init('http://jobs.hubu.edu.cn/List.aspx?ArticleChannelId=81');
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    $result = curl_exec($curl);
            //内容处理
    $result = strip_tags($result,'<a>');
    $result = stristr($result, 'nbsp当前位置:');
    $result = str_replace('nbsp当前位置:', '', $result);
    $result = stristr($result, '当前1/2页',true);
    $result = stristr($result, '通知公告');
    $result = str_replace('通知公告</a>', '', $result);
    preg_match_all('/(?<=href=\").*?(?=\")/', $result, $arrayTemp);
    $linkList = $arrayTemp[0];
    preg_match_all('/(?<=title=\").*?(?=\")/', $result, $arrayTemp);
    $titleList = $arrayTemp[0];
    preg_match_all('/(?<=\[)\d*\-\d*(?=\])/', $result, $arrayTemp);
    $dateList_temp = $arrayTemp[0];
    $dateList = array();
    $linkList = str_replace('Detail.aspx', 'http://jobs.hubu.edu.cn/Detail.aspx', $linkList);
    foreach ($dateList_temp as $key => $value) {
        $dateList[$key] = date('Y').'-'.$value;
    }
    $JobsHubu = array();
            //分别获得网页上的每条通知的标题,链接,时间
    $JobsHubu[0] = $dateList;
    $JobsHubu[1] = $titleList;
    $JobsHubu[2] = $linkList;
    return $JobsHubu;
}
//
function makePage($link)
{

        .......   //省略部分代码
       else if(starts($link,'jobs.hubu'))
      {
        echo "进入makePage函数";
        echo "处理网页".$link.'<br/>';
        $curl = curl_init();
        curl_setopt($curl, CURLOPT_URL , $link);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
        $result = curl_exec($curl);
        //echo $result;
        //echo "result结束";
        $result = strip_tags($result);
        $result = stristr($result, '&nbsp;>&nbsp;通知公告');
        $result = str_replace('&nbsp;>&nbsp;通知公告', '', $result);
        $result = stristr($result, '$(document).ready',true);
        $result = trim($result);
        $result = str_replace("\r\n", '<br/>', $result);
        $result = preg_replace('/(\<br\/\>){1,}/', '<br/>', $result);
        echo $result;
        echo '<br/><br/>';
        echo "退出makePage函数";
        return $result;
       }
}

先用getJobsHubuNotice()函数获取新闻的链接,标题,日期,然后用makePage()函数获取内容

这是在makePage内部打印链接的结果,链接用浏览器打开没有问题.

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全部回复(1)
PHP中文网

makePage($link)
$link有值么,类型对么?

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号