远程抓取,小偷程序。curl与file_get_contents()的比较

一般来说大家写小偷程序都喜欢用file_get_contents(),确实,简单无脑又暴力。但是后面发现其实,除了只是编码简便外,其他特性远远不及curl。学习才发现,curl支持很多协议,有FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE以及LDAP,也就是说,它能做到很多file_get_content做不到的事情。curl在php可以实现远程获取和采集内容;实现PHP网页版的FTP上传下载;实现模拟登陆;实现接口对接(API),数据传输;实现模拟Cookie;下载文件断点续传等等,功能十分强大。

此次我们就了解下curl最基本的使用方法,即只是简单抓取内容。

开启curl:

因为PHP默认是不支持curl功能的,因此如果要用curl的话,首先需要在php.ini中开启该功能,即去掉 ;extension= php_curl.dll 前面的分号,然后保存后重启apache/iis就好了。

$my_curl = curl_init();    //初始化一个curl对象

curl_setopt($my_curl, CURLOPT_URL, "http://www.baidu.com");    //设置你需要抓取的URL

curl_setopt($my_curl,CURLOPT_RETURNTRANSFER,1);    //设置是将结果保存到字符串中还是输出到屏幕上,1表示将结果保存到字符串

$str = curl_exec($curl);    //执行请求

echo $str;    //输出抓取的结果

curl_close($curl);    //关闭url请求

怎么比较性能,所谓性能,一般来说,大家很看重时间

<?php

//curl获取方式

list($micro,$second)=explode(‘ ‘,microtime());

$start = $micro+$second;

$url=‘http://www.baidu.com‘;

$ch = curl_init();

$timeout = 5;

curl_setopt ($ch, CURLOPT_URL, $url);

curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);

$file_contents = curl_exec($ch);

curl_close($ch);

//file_get_contents获取方式

list($micro,$second)=explode(‘ ‘,microtime());

$end = $micro+$second;

echo $end-$start;

//echo $file_contents;

echo "<hr>";

list($micro,$second)=explode(‘ ‘,microtime());

$start = $micro+$second;

$url=‘http://www.baidu.com‘;

$str=file_get_contents($url);

list($micro,$second)=explode(‘ ‘,microtime());

$end = $micro+$second;

echo $end-$start;

?>

0.19285988807678


0.28492617607117

0.1804530620575


0.27260899543762

0.18059706687927


0.28043794631958

随机刷新三次,对比。file_get_contents皆比curl方式消耗更多时间,当然,看者也可以去测试其他网站,取平均值来衡量两者函数性能,更加之客观。

总结:如果不是高并发的访问。其实用file_get_contents也未尝不可。但是一旦访问高了。这很可能也会成为服务器性能的瓶颈之一。合理选择,才是最好的开发方式

时间: 2024-10-13 11:02:02

远程抓取,小偷程序。curl与file_get_contents()的比较的相关文章

远程读取URL 建议用curl代替file_get_contents

初学php的朋友们,很容易翻一个错误,在写采集程序或者调用api接口总会有线考虑到使用file_get_contents函数来或许内容,程序的访问量不大倒是没什么影响,但是访问量提升了那非常的悲剧了,你会发现服务器负载飙升,最后服务器宕机.初入公司便遇到这个问题,遂使用curl取代此命令,并且禁用远程file_get_contents,它支持很多协议:FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE 以及 LDAP. <?php $url='h

百度收录链接抓取小程序

set_time_limit(0); header("Content-type:text/html;charset=utf-8"); $updatePoint = date("Y-m-d", time()); $patMD = date("m-d", time()); $xmlDatas = ''; for($i=0;$i<76;$i++) { $page = $i*10; $conts = file_get_contents("

抓取小程序

前言 ,想利用小程序导航页面来提升网站的流量,找到  www.xcxdh666.com  该小程序导航网站. 分析网页 1 发现网站其实也是用异步分页请求加载数据的  ,所以根本用不着xpath  解析html,直接分析其请求url 2点击加载更多找到请求,发现其实就 pageNum ,cagegory 两个参数 3所以直接请求url    带入参数,分析起返回json结果 编写代码 1 首先建立接收类型 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18

简单抓取小程序大全,并展示

前言,想利用小程序导航页面来提升网站的流量,找到www.xcxdh666.com该小程序导航网站. 分析网页       1发现网站其实也是用异步分页请求加载数据的,所以根本用不着xpath解析html,直接分析其请求URL       2点击加载更多找到请求,发现其实就是pageNum,cagegory两个参数       3所以直接请求URL,带入参数,分析起返回json结果 编写代码         1首先建立接收类型             public class XcxApplet

PHP的cURL库:抓取网页,POST数据及其他,HTTP认证 抓取数据

From : http://developer.51cto.com/art/200904/121739.htm 下面是一个小例程: ﹤?php// 初始化一个 cURL 对象$curl = curl_init(); // 设置你需要抓取的URLcurl_setopt($curl, CURLOPT_URL, 'http://cocre.com'); // 设置headercurl_setopt($curl, CURLOPT_HEADER, 1); // 设置cURL 参数,要求结果保存到字符串中还

Linux 抓取网页方式(curl+wget)

Linux抓取网页,简单方法是直接通过 curl 或 wget 两种命令. curl 和 wget支持协议 curl  支持 http,https,ftp,ftps,scp,telnet等网络协议 wget支持 http,https,ftp网络协议 curl 和 wget抓取实例 抓取网页,主要有url 网址和proxy代理两种方式 1. url 网址方式抓取 (1)curl下载百度首页内容,保存在baidu_html文件中 curl  http://www.baidu.com/  -o  ba

C语言调用curl库抓取网页图片(转)

思路是先用curl抓取网页源码,然后以关键字寻找出图片网址. 范例: 1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <string.h> 4 #include <curl/curl.h> 5 6 void get_key_from_str(char *origin, char *str1, char *str2, char *key); 7 8 int main(int argc, char **

PHP 获取远程网页内容的代码(fopen,curl已测)

获取远程网页内容的php代码,做小偷采集程序的程序经常用得到,现在用curl的比较多. 1.fopen的使用 复制代码 代码如下: <?php $handle = fopen ("http://s.jb51.net/", "rb"); $contents = ""; while (!feof($handle)) { $contents .= fread($handle, 8192); } fclose($handle); echo $con

PHP CURL或file_get_contents获取网页标题的代码及两者效率的稳定性问题

PHP CURL与file_get_contents函数都可以获取远程服务器上的文件保存到本地,但在性能上面两者完全不在同一个级别,下面我先来介绍PHP CURL或file_get_contents函数应用例子,然后再简单的给各位介绍一下它们的一些小区别吧. 推荐方法 CURL获取 ? 1 2 3 4 5 6 7 8 9 10 11 12 <?php $c = curl_init(); $url = 'www.jb51.net'; curl_setopt($c, CURLOPT_URL, $ur