使用PHP%20cURL扩展模拟浏览器抓取网页

抓取网页内容,PHP内置了几个函数都可以实现,如file()、file_get_contents()等都支持URL参数。但要实现更复杂的操作,这些函数就无能为力了。
cURL是一个利用URL语法在命令行下工作的文件传输工具,cURL提供了一个PHP扩展,使用该扩展,可以完完全全地模拟浏览器操作,就像使用浏览器浏览一个网页一样,可以设置header内容、设置COOKIE数据、POST数据、上传文件、设置代理等。其实我们这里讨论的抓取网页内容,只是它的一个常用的应用罢了。
cURL官方网站:http://curl.haxx.se/
PHP cURL扩展:http://curl.haxx.se/libcurl/php/
Windows下添加该扩展很简单,只要载入php_curl.dll即可。去掉php.ini文件extension=php_curl.dll前面的分号,将php_curl.dll拷入PHP扩展目录或C:\Windows\system32目录下重启Web服务器即可。php_curl.dll在PHP的ZIP包中提供。
Linux下需要先安装cURL,一个方法是将其编译进PHP,编译配置时候加上--with-curl[=DIR],另一个方法是编译成PHP模块载入,编译cURL模块方法和编译其它PHP模块方法雷同,以下是基本的命令:
cd /path/to/php/source 进入PHP源码目录
cd ext/curl 进入cURL模块源码目录
/usr/local/php/bin/phpize 生成编译配置文件
./configure --with-php-config=/usr/local/php/bin/php-config
make
make install
编译完成生成curl.so,修改php.ini,将该模块载入:
extension="/path/to/extension/curl.so"
测试cURL扩展是否载入,新建PHP文件:
<?php
if(extension_loaded('curl')) {
    echo 'cURL模块已载入!';
} else {
    echo 'cURL模块未载入!';
}
?>
抓取网页的例子:
<?php
$url = 'http://www.baidu.com';  // 抓取网页URL
$ch = curl_init($url);  // 初始化,返回一个handler
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);  // 设置选项,有返回值
curl_setopt($ch, CURLOPT_REFERER, 'http://www.google.cn/');  // 设置选项,来源页,这意味着可以伪造referer达到不可告人的目的smoke
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322)');  // 设置选项,浏览器信息
$raw = curl_exec($ch);  // 执行
curl_close($ch);  // 关闭handler
echo $raw;  // 输出结果
?>
curl_setopt()可设置很多选项,更多选项请参考PHP手册。
更多函数及其用法请参考PHP手册(再次废话一句,以强调PHP手册真乃圣经也cool)。

转载于:https://www.cnblogs.com/qesystem/archive/2010/05/28/1746227.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值