配色: 字号:
php curl 抓取页面几种方法介绍
2016-08-22 | 阅:  转:  |  分享 
  
phpcurl抓取页面几种方法介绍

curl主要是抓取数据,当然我们可以用其他的方法来抓取,比如fsockopen,file_get_contents等。但是只能抓那些能直接访问的页面,如果要抓取有页面访问控制的页面,或者是登录以后的页面就比较困难了。

是把PHP的主页取回放到一个文件中。

例1.使用PHP的CURL模块取回PHP主页

?代码如下 复制代码
为什么要使用代理进行抓取呢?以google为例吧,如果去抓google的数据,短时间内抓的很频繁的话,你就抓取不到了。google对你的ip地址做限制这个时候,你可以换代理重新抓。

?

?代码如下 复制代码 3,post数据后,抓取数据

单独说一下数据提交数据,因为用curl的时候,很多时候会有数据交互的,所以比较重要的。

?代码如下 复制代码 serialize(array(''tank'',''zhang'')),''sex''=>1,''birth''=>''20101010'')?例如array(''name''=>array(''tank'',''zhang''),''sex''=>1,''birth''=>''20101010'')这样会报错的/?$data=array(''name''=>''test'',''sex''=>1,''birth''=>''20101010'');?curl_setopt($ch,CURLOPT_URL,''http://localhost/mytest/curl/upload.php'');?curl_setopt($ch,CURLOPT_POST,1);?curl_setopt($ch,CURLOPT_POSTFIELDS,$data);?curl_exec($ch);??>在upload.php文件中,print_r($_POST);利用curl就能抓取出upload.php输出的内容Array([name]=>test[sex]=>1[birth]=>20101010) 4,抓取一些有页面访问控制的页面



页面访问控制的3种方法

页面访问控制的3种方法张映发表于2010-10-12

分类目录:apache/nginx我们经常会看到这种现象,看下图

apache页面访问控制为什么要进行这样的控制呢,给不同的人看不同的东西,对信息进行保护,虽然这种保护比较低级,多多少少还是有点用的。

一,用htpasswd命令,产生权限控制文件

?代码如下 复制代码 查看复制打印?1.[zhangy@BlackGhosttest]$htpasswd-c./accesstank?//生成一个密码文件,-c是新建一个文件?htpasswd-h可查看???2.Newpassword:???????????//提示输入密码???3.Re-typenewpassword:???????//重复密码???4.Addingpasswordforusertank???5.[zhangy@BlackGhosttest]$cataccess???//查看一下密码文件???6.tank:Uj5B3qIF/BNdI?????//用户名是明文的,密码是加密的。??[zhangy@BlackGhosttest]$htpasswd-c./accesstank?//生成一个密码文件,-c是新建一个文件?htpasswd-h可查看Newpassword:???????????//提示输入密码Re-typenewpassword:???????//重复密码Addingpasswordforusertank[zhangy@BlackGhoswww.shanxiwang.netttest]$cataccess???//查看一下密码文件tank:Uj5B3qIF/BNdI?????//用户名是明文的,密码是加密的。到这儿密码文件是生成好了。 二,页面访问控制方法

1,能过修改httpd.conf或者是httpd-vhosts.conf来进行配置

?

?代码如下 复制代码 listen10004NameVirtualHost:10004?DocumentRoot"/home/zhangy/www/test"?ServerName:10004?BandwidthModuleOn?ForceBandWidthModuleOn?Bandwidthall1024000?MinBandwidthall50000?LargeFileLimit50050000?MaxConnectionall2

?ErrorLog"/home/zhangy/apache/blog.51yip.com.com-error.log"?CustomLog"/home/zhangy/apache/blog.51yip.com-access.log"common//看一下,下面的配置??AuthTypeBasic?AuthName"accesstest"?AuthUserFile/home/zhangy/www/test/access?Requirevalid-user?

2,我们可以利用.htaccess文件来进行控制

在test的根目录下面建一个.htaccess的文件

?代码如下 复制代码 [zhangy@BlackGhosttest]$vi.htaccess  //打开个文件,添加权限内容[zhangy@BlackGhosttest]$cat.htaccess //下面就是.htaccess的内容?AuthTypeBasic?AuthName"accesstest"?AuthUserFile/home/zhangy/www/test/access?Requirevalid-user 3,不用密码文件,也可以进行访问控制

?代码如下 复制代码 define(''ADMIN_USERNAME'',''tank'');   //AdminUsernamedefine(''ADMIN_PASSWORD'',''tank'');    //AdminPassword

//logcheckif(!isset($_SERVER[''PHP_AUTH_USER''])||!isset($_SERVER[''PHP_AUTH_PW''])||?$_SERVER[''PHP_AUTH_USER'']!=ADMIN_USERNAME||$_SERVER[''PHP_AUTH_PW'']!=ADMIN_PASSWORD){?Header("WWW-Authenticate:Basicrealm="accesstest"");?Header("HTTP/1.0401Unauthorized");

?echo<<<EOB?<html><body>?<h1>Rejected!</h1>?<big>WrongUsernameorPassword!</big>?</body></html>EOB;?exit;} curl相关函数列表:

curl_init—初始化一个CURL会话curl_setopt—为CURL调用设置一个选项curl_exec—执行一个CURL会话curl_close—关闭一个CURL会话curl_version—返回当前CURL版本curl_init—初始化一个CURL会话描述intcurl_init([stringurl])curl_init()函数将初始化一个新的会话,返回一个CURL句柄供curl_setopt(),curl_exec(),和curl_close()函数使用。如果可选参数被提供,那么CURLOPT_URL选项将被设置成这个参数的值。你可以使用curl_setopt()函数人工设置。

例1.初始化一个新的CURL会话,且取回一个网页

?代码如下 复制代码 $ch=curl_init();curl_setopt($ch,CURLOPT_URL,“http://www.zend.com/”);curl_setopt($ch,CURLOPT_HEADER,0);curl_exec($ch);curl_close($ch);?>

献花(0)
+1
(本文系网络学习天...首藏)