文档章节

php抓取

Mrseven
 Mrseven
发布于 2015/11/13 10:24
字数 782
阅读 19
收藏 0

用file_get_contents  以get方式获取内容

$url = 'www.baidu.com';
  $html = file_get_contents($url);
  echo $html

用file_get_contents函数,以post方式获取URL

header("Content-type:text/html;charset=utf-8");
$aContext = array(  
    'http' => array(  
        'proxy' => 'tcp://10.167.32.133:8080',  //这里设置你要使用的代理ip及端口号  
        'request_fulluri' => true,  
    ),  
);  
$cxContext = stream_context_create($aContext);  
$url = "http://www.baidu.com";
$sFile = file_get_contents($url , False, $cxContext);  
echo $sFile;

使用curl库

使用curl库之前,查看一下php.ini 是否已经打开了curl  扩展

//初始化一个会话
$ch=curl_init();
//为curl会话设置参数
curl_setopt($ch, CURLOPT_URL, $url);
//如果成功只返回结果,不自动输出任何内容
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
//如果想把一个头包含在输出中,就设置为1
curl_setopt($ch, CURLOPT_HEADER, 0);
//设置代理服务器的IP
curl_setopt($ch, CURLOPT_PROXY, '10.167.32.133');
//设置代理服务的端口号
curl_setopt($ch, CURLOPT_PROXYPORT, 8080);
//设置http代理
curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_HTTP);
//请求HTTPS开头的URL
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
//curl会话执行
curl_exec($ch);
//关闭会话
curl_close($ch);

fsockopen、curl、file_get_contents 效率比较

1、curl和fsockopen

    fsockopen 是底层调用,属于网络系统的socket调用,而curl经过的包装支持https认证,http post 方法、http put 方法、FTP上传、Kerberos认证、http代理通道等,功能强大。fsockopen 返回的是没有处理过的数据,包括数据的长度数据内容和数据的结束符,而curl是处理后的内容

    curl 更加方便,但是其参数很多,配置稍微复杂,fsockopen 则有固定的几个参数,简单,但是获取结果可能需要在做处理

2、file_get_contents

    file_get_contents 调用外部文件容易超时报错,curl效率比file_get_contents() 和 fsockopen() 高一些,原因是curl会自动对DNS信息进行缓存

    file_get_contents 需要php.ini 里开启allow_url_fopen,请求http 是,使用的是http_fopen_wrapper 。

    file_get_contents 单个执行效率高,返回没有头的信息

    fsockopen 比较底层,可以设置基于UDP或是TCP协议取交互,配置麻烦,不以操作。返回完整信息

    总之,file_get_contents 和 curl  能干的,socket 都能干。socket 能干的,curl 就不一定了。file_get_contents 更多的时候只是去拉取数据。效率比较高也比较简单

 3、curl 和 file_get_contents

        1、fopen /file_get_contents 每次请求都会重新做DNS查询,并不对DNS信息进行缓存。但是CURL会自动对DNS信息进行缓存。对同一域名 下的网页或者图片的请求只需要一次DNS查询。这大大减少了DNS查询的次数。所以CURL的性能比fopen /file_get_contents 好很多

        2、fopen /file_get_contents在请求HTTP时,使用的是http_fopen_wrapper,不会keeplive。而curl却可以。这样在多次请求多个链接时,curl效率会好一些

        3、fopen / file_get_contents函数会受到php.ini文件中allow_url_open选项配置的影响。如果该配置关闭了,则该函数也就失效了。而curl不受该配置的影响

        4、curl可以模拟多种请求,例如:POST数据,表单提交等,用户可以按照自己的需求来定制请求。而fopen / file_get_contents只能使用get方式获取数据

结论:curl 效率及稳定都比 file_get_contents() 要好,fsockopen 也很强大,但是比较偏底层

 

 

 

© 著作权归作者所有

上一篇: PHP效率编程
下一篇: PHP 面向对象整理
Mrseven
粉丝 0
博文 52
码字总数 39044
作品 0
朝阳
程序员
私信 提问
PHP的curl常用的5个例子

PHP的curl常用的5个例子 1,抓取无访问控制文件 <?php 2,使用代理进行抓取 为什么要使用代理进行抓取呢?以google为例吧,如果去抓google的数据,短时间内抓的很频繁的话,你就抓取不到了。...

Yomut
2016/07/28
18
0
php读取/写入mssql乱码!

最近在做PHP抓取,PHP+MSSQL的搭配。。呵。呵。。网上找了找资料好少。。看来是个大冷门呐。东看一下。西看一下。总算让我给鼓捣点东西出来。。(最近会陆续会有PHP+MSSQL...

netmouse
2014/12/05
685
3
《CURL技术知识教程》系列分享专栏

《CURL技术知识教程》已整理成PDF文档,点击可直接下载至本地查阅 https://www.webfalse.com/read/201737.html 文章 PHP采集相关教程之一 CURL函数库 php中通过curl模拟登陆discuz论坛的实现...

开元中国2015
2018/11/06
71
0
win下php使用phantomjs抓取网页会假死如何解决?

【win7环境,需要抓取目标站的信息!】 1. 用php将目标站的URL写入到web.js里 2. 然后system命令phantomjs执行web.js,将信息写入到web.txt里 3. 遇到的问题是依次抓取一段时间后,phantomjs...

kukala
2014/07/12
2.5K
6
一次对HTTPS页面抓取的报错发现过程

今天发现系统后台的某个抓取页面突然失效了,提示: 大概意思就是,在主线程里使用同步的ajax请求对用户体验有影响,所以不让用了。 于是修改一下抓取函数: 先是把async: false注释掉,发现...

ywppengpeng
2016/11/22
18
0

没有更多内容

加载失败,请刷新页面

加载更多

免费又实用的PDF编辑器,让你始终快人一步!

没有一份文件是一出手就完美无缺的,必然经历了“初稿”、“二改”、“三改”、“终稿”、“再也不改”,等等一系列过程,每次上交都要转化成PDF格式,不仅麻烦、浪费时间而且看得令人眼花缭...

秃驴敢跟老衲抢方丈
32分钟前
107
0
Scala 系列教程(二):安装

Scala 安装 Scala 语言可以运行在Window、Linux、Unix、 Mac OS X等系统上。 Scala是基于java之上,大量使用java的类库和变量,使用 Scala 之前必须先安装 Java(>1.5版本)。 Mac OS X 和 ...

kylin_ink
40分钟前
107
0
45亿数据迁移记录后续-日数据量千万级别到clickhouse

45亿数据迁移记录后续-日数据量千万级别到clickhouse 相关文档地址 flume 参考地址 waterdrop 参考地址 clickhouse 参考地址 kafka 参考地址 环境 日志在一个服务器,clickhouse集群在另一个...

夜中孤影
41分钟前
245
0
PCB设计经验,不得不说的一些技巧,知识福利满满啊!

不得不说的设计经验 如果设计的电路系统中包含FPGA器件,则在绘制原理图前必需使用Quartus II软件对管脚分配进行验证。(FPGA中某些特殊的管脚是不能用作普通IO的) 4层板从上到下依次为:信...

demyar
44分钟前
102
0
myqsl 实战学习(一)

myqsl 实战学习(一) mysql逻辑架构图 mysql 总体分为Server层和存储引擎层 Server层 连接器、查询缓存、分析器、优化器、执行器等 存储引擎层 负责数据的存储和提取。InnoDB、MyISAM、Mem...

旺仔没馒头
46分钟前
81
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部