cURL、file_get_contents、snoopy.class.php 优缺点

添加时间:17-06-29 所属分类:PHP工具与代码
  https://my.oschina.net/junn/blog/147936



curl()、file_get_contents()、snoopy.class.php这三个远程页面抓取或采集中用到的工具,他们功能相当,到底有什么优缺点呢,下面逐一介绍:

snoopy.class.php

snoopy 是用 fsockopen 自开发的一个类,效率比较高且不需要服务器特定配置支持,在普通虚拟主机中即可使用,但是经常出问题。官方网址:http://sourceforge.net/projects

Snoopy是一个php类,用来模拟浏览器的功能,可以获取网页内容,发送表单。
Snoopy的特点:
1、抓取网页的内容 fetch
2、抓取网页的文本内容 (去除HTML标签) fetchtext
3、抓取网页的链接,表单 fetchlinks fetchform
4、支持代理主机
5、支持基本的用户名/密码验证
6、支持设置 user_agent, referer(来路), cookies 和 header content(头文件)
7、支持浏览器重定向,并能控制重定向深度
8、能把网页中的链接扩展成高质量的url(默认)
9、提交数据并且获取返回值
10、支持跟踪HTML框架
11、支持重定向的时候传递cookies
要求php4以上就可以了,由于本身是php一个类,无需扩支持,服务器不支持curl时候的最好选择。

file_get_contents()

file_get_contents 是 fsockopen 功能的简单打包,效率稍低些,但是抓取成功率很高,所以在 snoopy 出问题的时候我一般那他来。5.0.0 添加了对 context 的支持,有了context,他也可以发送 header 信息,自定义用户 agent, referer, cookies 都不在话下。5.1.0 添加了 offset 和 maxlen 参数,可以只读文件的一部分内容。

curl()

功能最强大,几乎可以模拟浏览器的各个方面,几乎可以以假乱真。效率也很高,支持多线程,不过需要开启下 curl 扩展。

cURL是一个利用URL语法规定来传输文件和数据的工具,支持很多协议,如HTTP、FTP、TELNET等。PHP也支持cURL库,我们常常用来远程页面抓取和采集。

一些CMS会使用curl函数,这就需要在服务器开启CURL扩展,下面介绍具体的方法:

1、将PHP的ext目录下的三个文件:php_curl.dll、libeay32.dll和ssleay32.dll复制到系统system32目录中。

2、将php.ini中的
;extension=php_curl.dll 前面的分号去掉

3、重启IIS或Apache

4、测试代码

[code]<?php
//初始化
$ch = curl_init();
//设置选项,包括URL
curl_setopt($ch,CURLOPT_URL,"www.abc.net");
curl_setopt($ch,CURLOPT_HEADER,1);
curl_exec($ch);
curl_close($ch);
?>[/code]

前篇:PHP cURL实现模拟登录与采集使用方法详解教... 后篇:90后超80后成餐饮消费主体 济南人竟最爱中式...
发表我的评论


推荐文章   潺潺复泠泠 处处是泉声   这些学校的微博火了:每天公示学生伙食...   “我今年27,现在慌得一比”   环卫女工落户上海18年清扫一条路,曾以...   在擅长的领域做到极致,是普通人为数不...
随机文章   将网址快捷方式放到桌面上的PHP代码   跨域调用COOKIES   PHP下实现JS语言中的escape解码函数的实...   PHP解密 unicode编码字符   PHP获取文件的断点续传代码
广告

其他推荐

因为本站所有内容均转载自其它媒体,本意为公众提供免费服务,但并不代表本网赞同其观点,也不能对其真实性验证负责,如稿件版权单位或个人不想在本网发布,请与我联系,本人会立即将其撤除,谢谢.联系方式:atseashawk@163.com QQ:99289555