教育资源为主的文档平台

当前位置: 查字典文档网> 所有文档分类> IT计算机> PHP资料> Php抓取网页数据方法

Php抓取网页数据方法

上传者:唐国金
|
上传时间:2016-08-18
|
次下载

Php抓取网页数据方法

    php发送Http请求,抓取网页数据方法(cURL,file_get_contents,snoopy)

 

  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时候的最好选择。

 

  附:

 

  snoopy中文手册:http://wenku.baidu.com/view/a2110c2a192e45361066f53a.html

 

  使用示例:http://outofmemory.cn/code-snippet/2480/php-usage-Snoopy-class-php-do-http-get-post-request

 

  snoopy的缺陷与CURL的强大:http://www.neatstudio.com/show-1047-1.shtml

 

  file_get_contents()

 

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

 

  curl()

 

  curl一般用来抓取网页,第二种就是get或者post数据,第三种应用就是实现PHP的多线程任务。

 

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

 

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

 

  也支持断点续传Range的代码:

 

  $ch = curl_init();

 

  curl_setopt($ch, CURLOPT_URL, 'http://www.spiegel.de/');

 

  curl_setopt($ch, CURLOPT_RANGE, '0-500');

 

  curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);

 

  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

 

  $result = curl_exec($ch);

 

  curl_close($ch);

 

  echo $result;

 

  /**

 

  *But as noted before if the server doesn't honor this header but sends the whole file curl will download all of it. E.g. http://www.php.net ignores the header. But you can (in addition) set a write function callback and abort the request when more data is received, e.g.

 

  * php 5.3+ only

 

  * use function writefn($ch, $chunk) { ... } for earlier versions

 

  */

 

  $writefn = function($ch, $chunk) {

 

  static $data='';

 

  static $limit = 500; // 500 bytes, it's only a test

 

  $len = strlen($data) + strlen($chunk);

 

  if ($len >= $limit ) {

 

  $data .= substr($chunk, 0, $limit-strlen($data));

 

  echo strlen($data) , ' ', $data;

 

  return -1;

 

  }

 

  $data .= $chunk;

 

  return strlen($chunk);

 

  };

 

  $ch = curl_init();

 

  curl_setopt($ch, CURLOPT_URL, 'http://www.php.net/');

 

  curl_setopt($ch, CURLOPT_RANGE, '0-500');

 

  curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);

 

  curl_setopt($ch, CURLOPT_WRITEFUNCTION, $writefn);

 

  $result = curl_exec($ch);

 

  curl_close($ch);

版权声明:此文档由查字典文档网用户提供,如用于商业用途请与作者联系,查字典文档网保持最终解释权!

下载文档

热门试卷

2016年四川省内江市中考化学试卷
广西钦州市高新区2017届高三11月月考政治试卷
浙江省湖州市2016-2017学年高一上学期期中考试政治试卷
浙江省湖州市2016-2017学年高二上学期期中考试政治试卷
辽宁省铁岭市协作体2017届高三上学期第三次联考政治试卷
广西钦州市钦州港区2016-2017学年高二11月月考政治试卷
广西钦州市钦州港区2017届高三11月月考政治试卷
广西钦州市钦州港区2016-2017学年高一11月月考政治试卷
广西钦州市高新区2016-2017学年高二11月月考政治试卷
广西钦州市高新区2016-2017学年高一11月月考政治试卷
山东省滨州市三校2017届第一学期阶段测试初三英语试题
四川省成都七中2017届高三一诊模拟考试文科综合试卷
2017届普通高等学校招生全国统一考试模拟试题(附答案)
重庆市永川中学高2017级上期12月月考语文试题
江西宜春三中2017届高三第一学期第二次月考文科综合试题
内蒙古赤峰二中2017届高三上学期第三次月考英语试题
2017年六年级(上)数学期末考试卷
2017人教版小学英语三年级上期末笔试题
江苏省常州西藏民族中学2016-2017学年九年级思想品德第一学期第二次阶段测试试卷
重庆市九龙坡区七校2016-2017学年上期八年级素质测查(二)语文学科试题卷
江苏省无锡市钱桥中学2016年12月八年级语文阶段性测试卷
江苏省无锡市钱桥中学2016-2017学年七年级英语12月阶段检测试卷
山东省邹城市第八中学2016-2017学年八年级12月物理第4章试题(无答案)
【人教版】河北省2015-2016学年度九年级上期末语文试题卷(附答案)
四川省简阳市阳安中学2016年12月高二月考英语试卷
四川省成都龙泉中学高三上学期2016年12月月考试题文科综合能力测试
安徽省滁州中学2016—2017学年度第一学期12月月考​高三英语试卷
山东省武城县第二中学2016.12高一年级上学期第二次月考历史试题(必修一第四、五单元)
福建省四地六校联考2016-2017学年上学期第三次月考高三化学试卷
甘肃省武威第二十三中学2016—2017学年度八年级第一学期12月月考生物试卷

网友关注

面试题库:面试每日一练结构化面试模拟题12.6
面试题库:面试每日一练结构化面试模拟题答案12.6
2017上海公务员考试个性题目大盘点
2017上海公务员考试行测数理能力部分真题(A类)及答案解析
上海市考行测题库:行测每日一练数量关系练习题
2017上海公务员考试行测真题(A类)及答案解析
上海市考申论模拟练习题答案:“奖孝金”
天天练面试:面试每日一练结构化面试模拟题
上海市考申论模拟练习题——“慢就业”现象
上海公务员面试题库:面试每日一练结构化面试模拟题答案12.7
上海市考行测题库:行测每日一练判断推理练习题
2017上海公务员考试行测言语理解与表达部分真题(A类)及答案解析
上海市考行测题库:行测每日一练言语理解练习题
天天练面试:面试每日一练结构化面试模拟题答案
上海市考行测题库:行测每日一练常识判断练习题
2017上海公务员面试每日一练结构化面试模拟题2.13
上海市考申论每周一练答案:校园欺凌现象
【申论题库】申论模拟练习题——垃圾分类
2017上海公务员面试每日一练结构化面试模拟题2.10
2017上海公务员考试行测判断推理部分真题(A类)及答案解析
2017上海公务员考试申论真题(A卷)答案要点
上海市考行测题库:行测每日一练资料分析练习题答案
上海市考行测题库:行测每日一练数量关系练习题答案
申论每周一练答案:看齐意识
面试题库:面试每日一练结构化面试模拟题答案
天天练面试:面试每日一练结构化面试模拟题答案9.26
2017上海公务员考试行测常识应用部分真题(A类)及答案解析
上海市考行测题库:行测每日一练常识判断练习题答案
上海市考行测题库:行测每日一练判断推理练习题答案
上海市考申论模拟练习题答案:健康谣言泛滥现象

网友关注视频

冀教版小学英语四年级下册Lesson2授课视频
冀教版英语三年级下册第二课
七年级下册外研版英语M8U2reading
二年级下册数学第三课 搭一搭⚖⚖
【部编】人教版语文七年级下册《泊秦淮》优质课教学视频+PPT课件+教案,广东省
北师大版数学 四年级下册 第三单元 第二节 小数点搬家
外研版英语七年级下册module3 unit2第二课时
七年级英语下册 上海牛津版 Unit9
苏科版数学八年级下册9.2《中心对称和中心对称图形》
化学九年级下册全册同步 人教版 第25集 生活中常见的盐(二)
沪教版牛津小学英语(深圳用) 五年级下册 Unit 12
冀教版小学数学二年级下册第二单元《有余数除法的竖式计算》
北师大版数学四年级下册第三单元第四节街心广场
《空中课堂》二年级下册 数学第一单元第1课时
苏科版数学 八年级下册 第八章第二节 可能性的大小
沪教版八年级下册数学练习册一次函数复习题B组(P11)
19 爱护鸟类_第一课时(二等奖)(桂美版二年级下册)_T502436
北师大版数学四年级下册3.4包装
3月2日小学二年级数学下册(数一数)
北师大版八年级物理下册 第六章 常见的光学仪器(二)探究凸透镜成像的规律
外研版英语三起5年级下册(14版)Module3 Unit1
冀教版小学数学二年级下册第二周第2课时《我们的测量》宝丰街小学庞志荣.mp4
冀教版英语五年级下册第二课课程解读
外研版英语七年级下册module1unit3名词性物主代词讲解
沪教版牛津小学英语(深圳用) 四年级下册 Unit 8
苏教版二年级下册数学《认识东、南、西、北》
沪教版牛津小学英语(深圳用) 六年级下册 Unit 7
【部编】人教版语文七年级下册《泊秦淮》优质课教学视频+PPT课件+教案,天津市
沪教版牛津小学英语(深圳用) 四年级下册 Unit 12
第4章 幂函数、指数函数和对数函数(下)_六 指数方程和对数方程_4.7 简单的指数方程_第一课时(沪教版高一下册)_T1566237