网络小爬虫(启示)
网络小爬虫(启示)
使用PHP 的内置函数下载文件:
PHP 有两个简单的内置函数,——fopen()和fgets(),用于从网络上下载文件。fopen()函数做两件事情:首先,它创建一个网络套接字,代表网络机器人和待检索的网络资源之间的一条连接,其次,它实现了HTTP 协议,这个协议定义了数据是如何传输的。这两个任务完成之后,fgets()利用计算机操作系统的网络能力从互联网上提取文件。
用fopen()和fgets()从网上下载文件:
Shell 中运行:
浏览器中运行的结果:
浏览器缓存是另一个在浏览器上运行网络机器人时会遇到的麻烦。在浏览网页的时候缓存是有用的,因为它让浏览器有能力等到收集到足够多的网页数据时才开始渲染并展示。然而,浏览器缓存对网络机器人来说是个麻烦,因为它通常会导致花更多的时间——比下载一个典型的网页要长得多。在延长的网络机器人的运行时间里,它所写的状态消息在浏览器进行缓存的时候可能不会显示出来。
用file()函数下载文件
fopen()和fgets()之外的另一个选择是file()函数,这个函数下载格式化的文件,并将内容放入一个数组。它与fopen()的差异包含两个重要方面:一个方面是,与fopen()不同,它不要求创建文件句柄,因为它做了所有的网络准备工作。另一个方面是,它以一个数组作为下载结果返回,下载文件中的每一行都是数组的一个元素。
使用LIB_http
LIB_http库提供了一个包装函数集,来简化复杂的PHP/CURL接口,其中的每一个接口都调用一个公共函数http(),此函数根据包装接口传递给它的值执行具体的任务,LIB_http中的所有函数都有一个共同的格式:传入一个目标URL 和一个上链URL ,返回一个数组,里面包含目标文件的内容、传输状态和错误信息
执行后输出,以包含网页标头、错误信息和状态信息的数组形式。
返回在$array[‘STATUS ’]里的信息对于了解抓取过程是如何进行的特别有用。包含在这个数组里的信息有下载速度、访问时间和文件大小,这对于编写诊断型的网络机器人来监控网站的性能都具有价值。
当一个内容类型行出现在HTTP 标头里面的时候,它定义了MIME ,也就是要从服务器上传输的文件内容的类型。该MIME 类型告诉网络代理如何处理这个文件。
from:Aaron
date:2014/4/17
To be continued