使用PHP的cURL库可以简单和有效地去抓网页 你只需要运行一个脚本 然后分析一下你所抓取的网页 然后就可以以程序的方式得到你想要的数据了 无论是你想从从一个链接上取部分数据 或是取一个XML文件并把其导入数据库 那怕就是简单的获取网页内容 cURL 是一个功能强大的PHP库 本文主要讲述如果使用这个PHP库
启用 cURL 设置
首先 我们得先要确定我们的PHP是否开启了这个库 你可以通过使用php_info()函数来得到这一信息
﹤phpphpinfo();﹥
如果你可以在网页上看到下面的输出 那么表示cURL库已被开启
如果你看到的话 那么你需要设置你的PHP并开启这个库 如果你是在Windows平台下 那么非常简单 你需要改一改你的php ini文件的设置 找到php_curl dll 并取消前面的分号注释就行了 如下所示
//取消下在的注释extension=php_curl dll
如果你是在Linux下面 那么 你需要重新编译你的PHP了 编辑时 你需要打开编译参数——在configure命令上加上 –with curl 参数
一个小示例
如果一切就绪 下面是一个小例程
﹤php// 初始化一个 cURL 对象$curl = curl_init();
// 设置你需要抓取的URLcurl_setopt($curl CURLOPT_URL //cocre );
// 设置headercurl_setopt($curl CURLOPT_HEADER );
// 设置cURL 参数 要求结果保存到字符串中还是输出到屏幕上 curl_setopt($curl CURLOPT_RETURNTRANSFER );
// 运行cURL 请求网页$data = curl_exec($curl);
// 关闭URL请求curl_close($curl);
// 显示获得的数据var_dump($data);
如何POST数据
上面是抓取网页的代码 下面则是向某个网页POST数据 假设我们有一个处理表单的网址// example /sendSMS php 其可以接受两个表单域 一个是电话号码 一个是短信内容
﹤php$phoneNumber = ;$message = This message was generated by curl and php ;$curlPost = pNUMBER= urlencode($phoneNumber) &MESSAGE= urlencode($message) &SUBMIT=Send ;$ch = curl_init();curl_setopt($ch CURLOPT_URL // example /sendSMS php );curl_setopt($ch CURLOPT_HEADER );curl_setopt($ch CURLOPT_RETURNTRANSFER );curl_setopt($ch CURLOPT_POST );curl_setopt($ch CURLOPT_POSTFIELDS $curlPost);$data = curl_exec();curl_close($ch);﹥
从上面的程序我们可以看到 使用CURLOPT_POST设置>
1、EditPlus
一套功能强大,可取代记事本的文字编辑器,拥有无限制的Undo/Redo、英文拼字检查、自动换行、列数标记、搜寻取代、同时编辑多文件、全屏幕浏览功能。而它还有一个好用的功能,就是它有监视剪贴簿的功能,能够同步于剪贴簿自动将文字贴进EditPlus的编辑窗口中,让你省去做贴上的步骤。另外它也是一个好用的HTML编辑器,除了可以颜色标记HTMLTag(同时支持C/C、Perl、Java)外,还内建完整的HTML和CSS1指令功能,对于习惯用记事本编辑网页的朋友,它可帮你节省一半以上的网页制作时间,若你有安装IE30以上版本,它还会结合IE浏览器于EditPlus窗口中,让你可以直接预览编辑好的网页(若没安装IE,也可指定浏览器路径)。
2、ZendStudio
ZendStudio是专业开发人员在使用PHP整个开发周期中唯一的集成开发环境(IDE),它包括了PHP所有必须的开发部件。通过一整套编辑、调试、分析、优化和数据库工具,ZendStudio加速开发周期,并简化复杂的应用方案。
3、Norepad
Notepad是一款非常有特色的编辑器,是开源软件,可以免费使用。
功能有:
①、内置支持多达27种语法高亮度显示(囊括各种常见的源代码、脚本,值得一提的是,完美支持nfo文件查看),也支持自定义语言;
②、可自动检测文件类型,根据关键字显示节点,节点可自由折叠/打开,代码显示得非常有层次感!这是此软件最具特色的体现之一;
③、可打开双窗口,在分窗口中又可打开多个子窗口,允许快捷切换全屏显示模式(F11),支持鼠标滚轮改变文档显示比例,等等;
④、提供数个特色东东,如邻行互换位置、宏功能,等等现在网上有很多文件编辑器,这个却是不可多得的一款,不论是日常使用还是手写编程代码,都能让你体会到它独有的优势和方便。
4、PDT(EclipsePHPDevelopmentTools)
Eclipse这个集成开发环境只要有插件就可以实现相应功能。PDT这个项目很早就开始进行了。ZendStudioforEclipse就是基于这个插件的,再加上自己的调试器。大家也可以在Eclipse上使用这个插件,然后自己再去选择调试器来配置自己的开发坏境。至于怎么配置,网上有人写出了自己的配置方法,大家可以自己查阅,这里只是介绍工具,这个暂且按下不表。这里我介绍的一个配置完整的包。这个也是Zend开发的,因为是免费的,所以在使用时自然不能和ZendStudio相比。
在PHP的开发中我们经常会通过网址URL向另一个网页传递参数的问题。在这个过程中我们首先需要获取到当前页面的URL,然后将URL中各个参数的值保存到变量中。整个过程较为简单,主要涉及到$_SERVER的用法。
1、$_server['>
2、$_SERVER["PHP_SELF"],作用:获取网页地址,如(/code/445html)。
3、$_SERVER["QUERY_STRING"],作用:获取网址URL参数,待会我们会在实例中用到。
4、$_SERVER[">
通过上述说明我们基本上已经了解了$_server的常用方法,下面我们首先通过PHP代码获取当前网页网址中传递的参数。对参数进行解析并输出到屏幕上。请看源代码:
<php
$para=urldecode($_SERVER["QUERY_STRING"]);//避免网址参数中文乱码
//举例url=">
//$para='a=aaaa&b=bbbb&c=cccc';
$cont=get_data($para);
echo$cont['a'];//屏幕打印aaaa
functionget_data($str){
$data=array();
$parameter=explode('&',end(explode('',$str)));
foreach($parameteras$val){
$tmp=explode('=',$val);
$data[$tmp[0]]=$tmp[1];
}
return$data;
}
>
for($i = 1; $i <= 300; $i++ ){
print(" ");
// 这一句话非常关键,cache的结构使得它的内容只有达到一定的大小才能从浏览器里输出
// 换言之,如果cache的内容不达到一定的大小,它是不会在程序执行完毕前输出的。经
// 过测试,我发现这个大小的底限是256个字符长。这意味着cache以后接收的内容都会
// 源源不断的被发送出去。
}
For($j = 1; $j <= 20; $j++) {
echo $j"
";
flush(); //这一部会使cache新增的内容被挤出去,显示到浏览器上
sleep(1); //让程序"睡"一秒钟,会让你把效果看得更清楚
}
我的思路是:
数据库中新建一个表
is_showUpdate
字段:id、is_update
记录 :id=1;is_update = false;
当你的程序要修改显示信息的时候(也就是展示数据),信息修改完毕将is_showUpdate表的记录标记为true
update is_showUpdate set is_update ='true' where id = 1;
展示页面通过js定时器通过ajax每五秒调取下你的接口,接口只是查询is_showUpdate 表的id为1的记录 is_update 是否为true;如果该字段为true,则此接口将id=1的记录的is_update修改为false,然后给前台页面反水数据,刷新页面;
file_get_contents是可以的,
<phpecho "<meta ;
输出结果:
以上就是关于使用PHP的cURL库进行网页抓取全部的内容,包括:使用PHP的cURL库进行网页抓取、php开发工具有哪些_最常用php开发工具、如何通过php获取提交页面的URL等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)