长沙PHP培训
达内长沙芙蓉路中心

15017569023

热门课程

php采集神器CURL使用方法详解

  • 时间:2016-10-31 18:06
  • 发布:长沙达内php培训学校
  • 来源:PHP教程

长沙达内PHP培训的老师今天给大家讲php采集神器CURL使用方法详解。

对于做过数据采集的人来说,cURL一定不会陌生。虽然在PHP中有file_get_contents函数可以获取远程链接的数据,但是它的可控制性太差了,对于各种复杂情况的采集情景,file_get_contents显得有点无能为力。因此,本文将为你介绍采集神器cURL的使用。

先给大家补充一下file_get_contents函数可以获取远程链接数据的方法。

<?php

$url = "http://git.oschina.net/yunluo/API/raw/master/notice.txt";

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);

$notice = curl_exec($ch);

echo $notice;

?>

这段代码会直接使用curl显示文件内容,但是问题来了,因为curl是php的扩展,有的主机为了安全会金庸curl的,宁外php本地调试的时候也是关闭curl的,所以会发生报错,所以这段代码是不可取的,所以云落对他重新改写了

<?php

if (function_exists('curl_init')) {

$url = "http://git.oschina.net/yunluo/API/raw/master/notice.txt";

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);

$dxycontent = curl_exec($ch);

echo $dxycontent;

} else {

echo '汗!貌似您的服务器尚未开启curl扩展,无法收到来自云落的通知,请联系您的主机商开启,本地调试请无视';

}

?>

修改后的版本是对curl扩展做一个判断,看看服务器到底有木有打开curl扩展,如果打开了,就直接显示文件,如果没打开就显示一段提示文字。

虽然修复了问题,但是又有一个问题来了,我只是显示一段文字而已,我也不是是用什么做什么大事的,所以我为什么要写那么多的代码呢??

经过一些瞎掰的检测,发现file_get_contents获取远程文件内容的速度不比curl慢,在一些文件较少的情况下可能还比curl扩展要快得多,所以我又重写了代码

<?php echo file_get_contents( "http://git.oschina.net/yunluo/API/raw/master/notice.txt" ); ?>

工具

火狐浏览器(FireFox)+ Firebug

“工欲善其事,必先利其器。”在分析案例之前,先让我们学习一下如何利用神器Firebug获取我们必要的信息。

使用F12打开Firebug,我们可以得到

1、箭头图标是“元素选择”工具,单击一次会高亮图标,同时,鼠标在页面内的移动会同时在HTML菜单中选定相应的内容,此时单击内容则表示选定了该元素,图标高亮取消。

Firebug查看元素

2、控制台

JS里面的console.log系列函数的打印就是在这里输出。

3、HTML

HTML内容,注意这里看到的不一定是采集要解析的内容,采集时候对内容的分析,一律以查看源码(Ctrl+U)为准,这里只是能快速定位元素的结构,然后再选择一个比较特殊的参照,在源码中定位相应的位置。

比如,你在HTML里面看到一个标签是<div id="demo" class="demo">Demo</div>,但是你查看源码时候看到的内容可能是<div class="demo" id="demo">Demo</div>,如果你对采集内容按照前者去做正则匹配,那么你会得不到结果。

4、CSS

这里是CSS文件内容

5、脚本

这里是Javascript文件内容

6、DOM

Dom节点内容

7、网络

每一个请求链接的数据,这里是我们采集要关注和分析的地方,它能够显示每一个请求的参数、请求头、Cookie数据等。在页面提交会刷新的情况下,需要使用保持,使得页面请求内容在刷新后仍然留着控制台中,如图(三)所示:

另外,火狐还有一款Tamper data扩展也能得到请求数据,必要时可以安装使用。

8、Cookies

Cookie数据

看到下面有很多可选的小菜单项,其中保持是我们要关注的,当选择它的时候,即使提交表单刷新了页面,下面内容区域的数据还是会保留,这个对于分析提交数据特别关键。

长沙达内PHP培训的老师总结一下

我们在分析采集请求的时候,主要关心“网络”菜单里的请求数据,必要时候使用“保持”以查看刷新页面的请求数据,请求前可以使用“清除”先清除下面的内容。

上一篇:php中 === 的使用
下一篇:php采集神器CURL使用:简单的采集

马上预约三天免费体验课

姓名:

电话:

hp中urlencode()和urldecode()URL编码函数

php的冒泡排序和快速排序

前端学PHP之变量

PHP实现随机数和方程求解

选择城市和中心
贵州省

广西省

海南省