recursion random eking文件 io bluetooth 百度seo关键词优化 click事件 jq去除空格 jquery获取元素宽度 移动端上传图片插件 css面试题 pcm接口 安装python python中文文档 python图形界面开发 python的random模块 java使用 java类和对象 java初级 学习java基础 java字符串替换 java目录 java异常处理 java文件复制 python游戏代码 java核心技术 eagle软件 fireworks 文字图片制作 正则表达式替换 vc运行库合集 pr旋转视频 谷歌浏览器升级 超级好友 kms ps制作动画 ps做表格 梦幻西游手游辅助 cf一键领取软件 mysql数据恢复
当前位置: 首页 > 学习教程  > 编程学习

php抓取网页内容方法分析

2021/1/9 1:58:42 文章标签: php抓取网页内容

抓取数据就像是同网页做斗争,自己在这里记录下自己做斗争的这个过程,一步一步来。 前两个网页抓取的都很顺利,但是到了果壳网发现以前用的方法不行了,于是换用curl: $ch curl_init(); $timeout 5; curl_setopt ($c…

抓取数据就像是同网页做斗争,自己在这里记录下自己做斗争的这个过程,一步一步来。

前两个网页抓取的都很顺利,但是到了果壳网发现以前用的方法不行了,于是换用curl:

$ch = curl_init();
$timeout = 5;
curl_setopt ($ch, CURLOPT_URL,"http://mooc.guokr.com/search/course/?wd=qq");
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$contents3 = curl_exec($ch);
curl_close($ch);

$regex6="/<ul class=\"course_list\".*?>.*?<\/ul>/ism";
if(preg_match_all($regex6, $contents3, $matchs3)){
  //  echo($matchs3[0][0]);
}else{
    echo '0';
}
echo "<hr/>";

然后自己发现到了极客学院,自己上面的方法又不行了,抓取到的不是有用的数据反而是没什么用处的 网页说浏览器错误,原因是自己没有声明浏览器类型:


$UserAgent = 'Mozilla/5.0 (Windows; U; Windows NT 5.2) Gecko/2008070208 Firefox/3.0.1';
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'http://www.jikexueyuan.com/search/s/q_%E5%BE%AE%E4%BF%A1');
curl_setopt($curl, CURLOPT_USERAGENT, $UserAgent);
$data = curl_exec($curl);

然后接下来是网易云课堂,于是乎自己的上面的方法又不行了。一会再说网易云课堂这个鬼,因为它是用js的ajax动态加载的内容,所以就比较蛋疼。
于是乎自己先抓了淘宝,但是发现抓淘宝的时候又有一个问题就是淘宝教育的编码并不是utf-8,于是自己在淘宝的抓取上用了这样一个函数:

function safeEncoding($str){
    $code=mb_detect_encoding($str,array('ASCII','GB2312','GBK','UTF-8'));//检测字符串编码
    if($code=="CP936"){
        $result=$str;
    }
    else{
        //$result=mb_convert_encoding($str,'UTF-8',$code);//将编码$code转换为utf-8编码
        $result=iconv($code,"UTF-8",$str);
    }
    return $result;
}

只要对结果使用这个函数就没有什么问题了。

然后自己在抓取开课吧的时候,又发现了一个新的问题: 开课吧的网址链接是相对链接的,自己需要替换成绝对链接,用正则替换或者一般的字符串替换替换成一般的绝对链接就可以:

下面自己给了两个方法:

$body=fcontents($url10,$cookie);
$body=preg_replace("/href=\"\/courses\//u","href=\"http://www.kaikeba.com/courses/",$body);


$regex9="/<ul class=\"list-unstyled course-row\".*?<\/ul>/ism";
if(preg_match_all($regex9, $body, $matchs5)){
    $temp=$matchs5[0][0];
//    echo gettype($temp);
//    $temp=str_replace("href=\"/courses","href=\"http://www.kaikeba.com/courses",$temp);
    echo($temp);

}else{
    echo '0';
}

本文链接: http://www.dtmao.cc/news_show_1100176.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?