网络爬虫-php

php爬虫入门

本篇文章介绍PHP抓取网页内容技术,利用PHP cURL扩展获取网页内容,还可以抓取网页头部,设置cookie,处理302跳转。

一、cURL安装

采用源码安装PHP时,需要在configure时添加配置项,

cd php

./configure --with-curl

安装完毕,可以利用php -m命令查看,是否已经支持cURL扩展。

php -m | grep curl

也可以利用phpinfo查看,是否已经支持cURL扩展。

 

 

二、获取网页内容

cURL支持很多网络协议,如HTTP、HTTPS、FTP等。普通网页采用HTTP协议,一些安全性高的网页采用HTTPS(HTTPS协议采用数据加密技术,通过公钥技术交换密钥,加密传输内容。因此采用HTTPS协议的网页,在整个链路上传输的都是加密后的数据。例如Baidu采用HTTPS协议,你输入的关键字被网络传输协议加密,即使是运营商可以获得全部数据,也无法获得数据的内容。HTTPS协议也有缺点,就是加解密需要耗费计算时间,因此HTTPS网站会慢一些,而大多数网站都是采用HTTP协议)。HTTP协议中,定义了两种方法GET和POST。POST方法通常用于表单提交,能够提交文件等大数据。GET方法用来获取网页数据,也可以提交少量数据。本文主要介绍利用GET协议获取网页数据,将来再详细讲解cURL POST技术。

我们先看一些浏览器是怎么工作的,打开chrome浏览器,F12进入开发者模式,将工具栏切换到network,如下图,利用chrome工具可以查看每个文件的传输信息。

网络爬虫-php_第1张图片

浏览器要加载一个网页,首先下载html文件,再下载js、css、图片等资源文件再进行渲染加载。通常数据抓取只需要抓取html文件,下图是chrome工具显示下载http文件的内容。

 网络爬虫-php_第2张图片

三、PHP实现 

复制代码

复制代码

复制代码

复制代码

基本设置,返回网页内容。

四、获得HTTP头部设置cookie

有些网站,会采用cookie技术。当采集程序没带有相关cookie时,很容易被网站认定是“机器人”,拒绝对其服务。通过chrome调试www.sogou.com,发现cookie是包含在网页头信息中的。因此,我们需要两个步骤(1)HTTP头信息中获取cookie(2)发送请求时添加cookie。

头信息包含设置cookie,

 网络爬虫-php_第3张图片

刷新网页,查看头信息,请求包含cookie信息

 网络爬虫-php_第4张图片

获取cookie

 

复制代码

复制代码

复制代码

复制代码

 

返回结果

Cookie:ABTEST=0|1433425917|v17;IPLOC=CN1100;SUID=3295CB6F1220920A00000000557057FD

设置cookie

复制代码

复制代码

复制代码

复制代码

五、抓取302跳转

在Baidu中搜索关键词,返回的结果链接是一个Baidu加密过的链接,通过二次跳转才是真正的网址。(Baidu为了防止360抓取,把结果都加密了)。

我们可以抓取头部中的location信息找到真实地址,

复制代码

复制代码

复制代码

复制代码

 

抓取302跳转还有另外一种方式,利用ob重定向流的方式,并且设置允许curl跳转到新地址。代码如下

复制代码

复制代码

你可能感兴趣的:(爬虫)