首页 > 经验 > 关键词  > PHP爬虫最新资讯  > 正文

【php爬虫】百万级别知乎用户数据爬取与分析

2015-09-30 10:16 · 稿源:cnblogs.com

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

文/Hector

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

 

开发前的准备

 

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

安装PHP5.6或以上版本;

安装curl、pcntl扩展。

 

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

 

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

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

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

初始的示例:

    $url = 'https://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; //抓取的结果

运行上面的代码可以获得mora-hu用户的个人中心页面。利用该结果再使用正则表达式对页面进行处理,就能获取到姓名,性别等所需要抓取的信息。

 

图片防盗链

 

在对返回结果进行正则处理后输出个人信息的时候,发现在页面中输出用户头像时无法打开。经过查阅资料得知,是因为知乎对图片做了防盗链处理。解决方案就是请求图片的时候在请求头里伪造一个referer。

在使用正则表达式获取到图片的链接之后,再发一次请求,这时候带上图片请求的来源,说明该请求来自知乎网站的转发。具体例子如下:

function getImg($url, $u_id){    
if (file_exists('./images/' . $u_id . ".jpg"))
{
return "images/$u_id" . '.jpg'; } if (empty($url))
{
return '';
}
$context_options = array(
'http' => array(
'header' => "Referer:https://www.zhihu.com"//带上referer参数   )
  );
$context = stream_context_create($context_options);
$img = file_get_contents('http:' . $url, FALSE, $context);
file_put_contents('./images/' . $u_id . ".jpg", $img);
return "images/$u_id" . '.jpg';}

爬取更多用户

抓取了自己的个人信息后,就需要再访问用户的关注者和关注了的用户列表获取更多的用户信息。然后一层一层地访问。可以看到,在个人中心页面里,有两个链接如下:

这里有两个链接,一个是关注了,另一个是关注者,以“关注了”的链接为例。用正则匹配去匹配到相应的链接,得到url之后用curl带上cookie再发一次请求。抓取到用户关注了的用于列表页之后,可以得到下面的页面:

分析页面的html结构,因为只要得到用户的信息,所以只需要框住的这一块的div内容,用户名都在这里面。可以看到,用户关注了的页面的url是:

不同的用户的这个url几乎是一样的,不同的地方就在于用户名那里。用正则匹配拿到用户名列表,一个一个地拼url,然后再逐个发请求(当然,一个一个是比较慢的,下面有解决方案,这个稍后会说到)。进入到新用户的页面之后,再重复上面的步骤,就这样不断循环,直到达到你所要的数据量。

  • 相关推荐
  • 大家在看
  • 积极推动国产化替代,智器云可视化数据分析工具UOS版正式上线!

    当今世界正经历百年未有之大变局,新一轮科技革命和产业变革加速演进。网络信息安全已成为重塑国际战略格局、抢占国际竞争至高点、争夺发展主动权的战略要素。发展国产化操作系统,如:安超、麒麟等,是国家针对Stuxnet 震网病毒、棱镜门等网络攻击和威胁手段的重要防范利器。由于国产化操作系统应用覆盖不全,许多情报分析类软件无法适配。但火眼金睛用户完全不用担心!火眼AI版已高效完成了软件国产化适配的重要战略部署,并获得

  • Stratifyd数据分析平台加盟腾讯云市场,赋能品牌消费洞察

    2021 年11 月,Stratifyd AI数据分析平台正式入驻腾讯云市场,成为腾讯云SaaS生态圈的重要一员。依托腾讯云平台的技术支持和市场资源,Stratifyd将充分发挥数据价值的挖掘能力,赋能更多品牌实现数据驱动的决策运营。 1.【直接访问】Stratifyd腾讯云市场 2.【搜索访问】搜索腾讯云—进入云市场—搜索【Stratifyd】即可 Stratifyd携手腾讯云,打造消费洞察新生态 随着数字经济的发展,传统企业正经历从线下到线上数字化转型的新挑?

  • HawkEye 360获1.45亿美元D轮融资 致力拓展天基射频数据分析服务

    尽管行业巨头普遍使用卫星成像技术来提供情报与分析服务,但一家名为 HawkEye 360 的初创企业却选择了不同的策略。近日由 Insight Partners 和 Seraphim 太空投资信托领投的 1.45 亿美元 D 轮融资,还吸引了阿联酋战略发展基金、Jacbos、Gula Tech Adventures、116 Street Ventures、以及 New North Ventures 等投资者HawkEye 360 的现有投资者中,Advance、Razors Edge、NightDragon、SVB Capital、Shield Capital 和 Adage Capit

  • JetBrains 等多个社区成员宣布成立 PHP 基金会

    包括JetBrains在内的多个PHP社区成员今天宣布成立PHP基金会,以继续开发该语言。成员名单还包括Automattic、Laravel、Acquia、Zend、Craft CMS、Private Packagist、Tideways和PrestaShop。

  • 携手社区成员:JetBrains宣布成立PHP基金会

    Laravel News 报道称,包括 JetBrains 在内的多位社区成员,刚刚宣布了 PHP 基金会的正式成立。作为一家非盈利组织,这项 Open Collective 倡议旨在持续推进这款语言的未来发展。通过资助为 PHP 语言做出贡献的全职和兼职开发者们,PHP 基金会希望能够确保该语言的长期繁荣。(来自:Open Collective)除了 JetBrains,PHP 基金会的成员名单中还包括 Automattic、Laravel、Acquia、Zend、Craft CMS、Private Packagist、Tideways ?

  • 面向计算、数据、通信密集型应用需求 青云科技推出QingCloud EHPC

    企业级 ICT 服务商青云QingCloud (qingcloud.com,股票代码:688316)于 11 月23 日举行发布会,宣布QingCloud EHPC 服务正式上线。QingCloud EHPC高配 CPU/GPU 异构计算,存储 GP 级吞吐、百万级 IOPS,网络高吞吐、低延时可达100 Gb/s,300+ 应用软件……以超高算力、超低成本、超多软件、超优服务,让用户快速获取超算服务,更专注于业务。青云弹性高性能计算(QingCloud EHPC)基于青云云基础设施,为用户提供部署在公有云、?

  • 电信终端大数据:华为 P50 Pro连夺两榜单第一

    近日,中国电信移动终端研究测试中心公布了《中国电信终端洞察报告2021版第二期》,通过综合分析电信终端用户的真实大数据,来洞察近期的用户真实偏好。其中,也公布了用户最满意机型和最推荐机型名单。两个名单中可以看到,华为P50 Pro成为了5K以上价位段最满意和最推荐机型的榜首,击败了苹果、三星等一众品牌,可谓目前最受电信用户满意和自发推荐的旗舰机型。为什么华为P50 Pro会受到用户们的喜好呢?外观上,华为P50 Pro采用?

  • 橙希云将如何使用IPFS构建元宇宙数据存储?

    对于WEB3. 0 的理解,简单来讲就是突破WEB2. 0 中心化数据集存的模式,以更高效、更安全、更低能耗的形式,赋予全新的数字身份、数字资产以及分布式数据存储。WEB3. 0 是机器语言网络,机器互联互通之后形成的一个系统,处于系统中的计算机能够分析网络中的所有数据,包括内容、链接、人与计算机之间的交互习惯等。在这样一个自动化、智能化的全新互联网世界,去中心化的味道越来越强烈。要实现WEB3. 0 的全面发展与区块链网络架构

  • 数据泄露事件频发,企业该如何应对应用数据安全问题?

    随着数字经济的快速崛起,万物互联、企业上云等趋势的不断推进,数据已经成为最有价值的资产之一。然而,数字经济迎来新发展机遇的同时,数据泄露事件也在持续高频发生。2020 年3 月,万豪国际酒店约有520 万名酒店客人的信息被泄露,泄露资料包括客人的联系方式、地址、出生日期等。2020 年4 月,视频会议软件Zoom因存在严重的隐私安全漏洞,造成了至少15000 名用户视频记录被公开在网上,超过50 万Zoom账户在交易网站上被低价出?

  • 分析称用于建立检测皮肤病的算法的数据集并不包括足够的肤色信息

    据The Verge报道,根据一项新分析,用于训练检测皮肤问题的算法的公共皮肤图像数据集并不包括足够的肤色信息。而在有肤色信息的数据集中,只有很少的图像是深色皮肤的--因此使用这些数据集建立的算法对非白人来说可能不那么准确。周二发表在《柳叶刀-数字医疗》上的这项研究检查了21个可自由访问的皮肤状况图像数据集。这些数据集共包含10万多张图片。这些图像中只有1400多张附有关于患者种族的信息,只有2236张有关于肤色的信息。

这篇文章对你有价值吗?

  • 热门标签

热文

  • 3 天
  • 7天