使用PHP的cURL库进行网页抓取

使用PHP的cURL库进行网页抓取,第1张

使用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是可以的,

<php

echo "<meta ;

输出结果:

以上就是关于使用PHP的cURL库进行网页抓取全部的内容,包括:使用PHP的cURL库进行网页抓取、php开发工具有哪些_最常用php开发工具、如何通过php获取提交页面的URL等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/web/10639305.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-10
下一篇 2023-05-10

发表评论

登录后才能评论

评论列表(0条)

保存