仓酷云

标题: PHP网页编程之PHP的cURL库复杂和无效地抓网页 [打印本页]

作者: 再现理想    时间: 2015-2-3 23:41
标题: PHP网页编程之PHP的cURL库复杂和无效地抓网页
工具程序用来显示 Rasmus Lerdorf 的个人履历,以及统计网页流量。   </p> 利用PHP的cURL库可以复杂和无效地去抓网页。你只需求运转一个剧本,然后剖析一下你所抓取的网页,然后就能够以法式的体例失掉你想要的数据了。不管是你想从从一个链接上取局部数据,或是取一个XML文件并把其导入数据库,那怕就是复杂的获得网页内容,cURL 是一个功效壮大的PHP库。本文次要讲述假如利用这个PHP库。
启用 cURL 设置
起首,咱们得先要肯定咱们的PHP是不是开启了这个库,你可以经由过程利用php_info()函数来失掉这一信息。
<?php
phpinfo();
?> 假如你可以在网页上看到上面的输入,那末暗示cURL库已被开启。
假如你看到的话,那末你需求设置你的PHP并开启这个库。假如你是在Windows平台下,那末十分复杂,你需求改一改你的php.ini文件的设置,找到php_curl.dll,并作废后面的分号正文就好了。以下所示:
  //作废下在的正文
extension=php_curl.dll
假如你是在Linux上面,那末,你需求从头编译你的PHP了,编纂时,你需求翻开编译参数——在configure号令上加上“&ndash;with-curl” 参数。
一个小示例
假如一切停当,上面是一个小例程:
  <?php
// 初始化一个 cURL 对象
$curl = curl_init();

// 设置你需求抓取的URL
curl_setopt($curl, CURLOPT_URL, 'http://cocre.com');

// 设置header
curl_setopt($curl, CURLOPT_HEADER, 1);

// 设置cURL 参数,请求了局保留到字符串中仍是输入到屏幕上。
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

// 运转cURL,恳求网页
$data = curl_exec($curl);

// 封闭URL恳求
curl_close($curl);

// 显示取得的数据
var_dump($data);
?>
若何POST数据
下面是抓取网页的代码,上面则是向某个网页POST数据。假定咱们有一个处置表单的网址http://www.example.com/sendSMS.php,其可以承受两个表单域,一个是德律风号码,一个是短信内容。
  <?php
$phoneNumber = '13912345678';
$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, 'http://www.example.com/sendSMS.php');
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);
$data = curl_exec();curl_close($ch);
?>
从下面的法式咱们可以看到,利用CURLOPT_POST设置HTTP协定的POST办法,而不是GET办法,然后以CURLOPT_POSTFIELDS设置POST的数据。
关于代办署理办事器
上面是一个若何利用代办署理办事器的示例。请注重个中高亮的代码,代码很复杂,我就不必多说了。
  <?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://www.example.com');
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1);
curl_setopt($ch, CURLOPT_PROXY, 'fakeproxy.com:1080');
curl_setopt($ch, CURLOPT_PROXYUSERPWD, 'user:password');
$data = curl_exec();curl_close($ch);
?>
关于SSL和Cookie
关于SSL也就是HTTPS协定,你只需求把CURLOPT_URL毗连中的http://酿成https://就能够了。固然,还有一个参数叫CURLOPT_SSL_VERIFYHOST可以设置为验证站点。
关于Cookie,你需求懂得上面三个参数:
CURLOPT_COOKIE,在当面的会话中设置一个cookie
CURLOPT_COOKIEJAR,当会话停止的时分保留一个Cookie
CURLOPT_COOKIEFILE,Cookie的文件。
HTTP办事器认证
最初,咱们来看一看HTTP办事器认证的情形。
  <?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://www.example.com');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt(CURLOPT_USERPWD, '[username]:[password]')

$data = curl_exec();
curl_close($ch);
?>
关于其它更多的内容,请参看相干的cURL手册。
如果你单纯是为了做网站赚钱,我想你还是别学php的好,去学ASP,JSP好了,毕竟它们有实力雄厚的公司去支持它们。
作者: 仓酷云    时间: 2015-2-4 06:05
我还是强烈建议自己搭建php环境。因为在搭建的过程中你会遇到一些问题,通过搜索或是看php手册解决问题后,你会更加深刻的理解它们的工作原理,了解到php配置文件中的一些选项设置。
作者: 只想知道    时间: 2015-2-4 06:06
真正的方向了,如果将来要去开发团队,你一定要学好smarty ,phplib这样的模板引擎,
作者: 再现理想    时间: 2015-2-9 17:03
Ps:以上纯属原创,如有雷同,纯属巧合
作者: 深爱那片海    时间: 2015-2-10 00:34
其实没啥难的,多练习,练习写程序,真正的实践比看100遍都有用。不过要熟悉引擎
作者: 飘灵儿    时间: 2015-2-11 02:51
首先声明:我是一个菜鸟,是一个初学者。学习了一段php后总是感觉自己没有提高,无奈。经过反思我认为我学习过程中存在很多问题,我改变了学习方法后自我感觉有了明显的进步。
作者: 精灵巫婆    时间: 2015-3-1 19:14
在我安装pear包的时候老是提示,缺少某某文件,才发现 那群extension 的排列是应该有一点的顺序,而我安装的版本的排序不是正常的排序。没办法我只好把那群冒号加了上去,只留下我需要使用的扩展。
作者: 冷月葬花魂    时间: 2015-3-5 06:57
使用zendstdio 写代码的的时候,把tab 的缩进设置成4个空格是很有必要的
作者: 谁可相欹    时间: 2015-3-7 09:57
要进行开发,搭建环境是首先需要做的事,windows下面我习惯把环境那个安装在C盘下面,因为我配的环境经常出现诡异事件,什么事都没做环境有的时候就不能用啦。
作者: 不帅    时间: 2015-3-13 03:07
最后祝愿,php会给你带来快乐的同时 你也会给他带来快乐。
作者: 小女巫    时间: 2015-3-17 07:10
实践是检验自己会不会的真理。
作者: 飘飘悠悠    时间: 2015-3-18 00:42
Apache不是非得用80或者8080端口的,我刚开始安得时候就是80端口老占用,就用了个 81端口,结果照常,就是输localhost的时候,应该输入为 localhost:81
作者: 活着的死人    时间: 2015-3-25 08:33
建数据库表的时候,int型要输入长度的,其实是个摆设的输入几位都没影响的,只要大于4就行,囧。
作者: 兰色精灵    时间: 2015-3-31 11:56
兴趣是最好的老师,百度是最好的词典。
作者: 透明    时间: 2015-4-1 17:08
实践是检验自己会不会的真理。
作者: 海妖    时间: 2015-4-2 16:44
有时候汉字的空格也能导致页面出错,所以在写代码的时候,要输入空格最好用引文模式。
作者: admin    时间: 2015-4-5 08:18
在我安装pear包的时候老是提示,缺少某某文件,才发现 那群extension 的排列是应该有一点的顺序,而我安装的版本的排序不是正常的排序。没办法我只好把那群冒号加了上去,只留下我需要使用的扩展。
作者: 简单生活    时间: 2015-4-8 06:46
先学习php和mysql,还有css(html语言很简单)我认为现在的效果比以前的方法好。
作者: 山那边是海    时间: 2015-4-21 16:24
有位前辈曾经跟我说过,phper 至少要掌握200个函数 编起程序来才能顺畅点,那些不熟悉的函数记不住也要一拿手册就能找到。所以建议新手们没事就看看php的手册(至少array函数和string函数是要记牢的)。
作者: 若天明    时间: 2015-5-7 21:38
这些都是最基本最常用功能,我们这些菜鸟在系统学习后,可以先对这些功能深入研究。
作者: 蒙在股里    时间: 2015-5-9 07:52
最后祝愿,php会给你带来快乐的同时 你也会给他带来快乐。




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2