仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1333|回复: 20
打印 上一主题 下一主题

[学习教程] PHP网页编程之PHP的cURL库复杂和无效地抓网页

[复制链接]
再现理想 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-2-3 23:41:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

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

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-9-20 19:37

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表