牛骨文教育服务平台(让学习变的简单)
博文笔记

PHP写爬虫

创建时间:2016-01-03 投稿人: 浏览次数:200

地址:http://www.chinaz.com/web/2015/0930/452838.shtml

代码托管地址:https://github.com/hhqcontinue/zhihuSpider

文/Hector

这次抓取了110万的用户数据,数据分析结果如下:

PHP爬虫 数据抓取 数据分析 爬虫抓取数据

 

开发前的准备

 

安装linux系统(Ubuntu14.04),在VMWare虚拟机下安装一个Ubuntu;

安装PHP5.6或以上版本;

安装curl、pcntl扩展。

 

使用PHP的curl扩展抓取页面数据

 

PHP的curl扩展是PHP支持的允许你与各种服务器使用各种类型的协议进行连接和通信的库。

本程序是抓取知乎的用户数据,要能访问用户个人页面,需要用户登录后的才能访问。当我们在浏览器的页面中点击一个用户头像链接进入用户个人中心页面的时候,之所以能够看到用户的信息,是因为在点击链接的时候,浏览器帮你将本地的cookie带上一齐提交到新的页面,所以你就能进入到用户的个人中心页面。因此实现访问个人页面之前需要先获得用户的cookie信息,然后在每次curl请求的时候带上cookie信息。在获取cookie信息方面,我是用了自己的cookie,在页面中可以看到自己的cookie信息:

PHP爬虫 数据抓取 数据分析 爬虫抓取数据

一个个地复制,以"__utma=?;__utmb=?;"这样的形式组成一个cookie字符串。接下来就可以使用该cookie字符串来发送请求。

初始的示例:

    $url = "http://www.zhihu.com/people/mora-hu/about"; 
    //此处mora-hu代表用户ID
    $ch = curl_init($url); 
    //初始化会话
    curl_setopt($ch, CURLOPT_HEADER, 0);    
    curl_setopt($ch, CURLOPT_COOKIE, $this->config_arr["user_cookie"]);  
    //设置请求COOKIE
    curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER["HTTP_USER_AGENT"]);    
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
     //将curl_exec()获取的信息以文件流的形式返回,而不是直接输出。
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);     
     $result = curl_exec($ch);    
    return $result;  //抓取的结果
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。