网页视频抓取工具 知乎(本文爬取了虎嗅网建站至今共5万条新闻标题内容)

优采云 发布时间: 2021-12-26 22:18

  网页视频抓取工具 知乎(本文爬取了虎嗅网建站至今共5万条新闻标题内容)

  摘要:在很多情况下,一篇文章能否被广泛传播,除了文章本身的实际质量外,一个好的标题也很重要。本文对虎嗅网成立以来共5万条新闻头条内容进行爬取,帮助您找到文章头条的技巧和灵感。同时,分享一些有趣的文章和作者。

  一、分析背景

  1. 为什么选择“虎嗅”

  在众多新媒体网站中,“虎嗅”网站的文章内容和质量都还算不错。在《新榜》科技公众号排行榜中,位列榜单第三,颇受青睐。所以我选择爬取这个网站的文章信息,顺便了解一下这几年科技互联网上出现了哪些热点信息。

  

  《关于虎嗅》

  虎嗅网成立于2012年5月,是一个聚合优质创新信息和人的新媒体平台。平台专注贡献原创、深度、犀利、优质的商业信息,围绕创新创业进行分析交流。虎嗅网的核心是关注互联网与传统行业的融合、明星企业的风风雨雨、行业大潮的力量与趋势。

  2. 分析内容

  ①分析虎熊网5万篇文章的基本情况,包括采集

数、评论数等。

  ②发现最受欢迎和最不受欢迎的文章和作者

  ③分析文章标题形式(长度、句型)与流行度的关系

  ④ 展示近年来科技互联网行业的热门词汇

  3. 分析工具

  ① Python 3.6

  ② 蜘蛛

  ③ MongoDB

  ④ Matplotlib

  ⑤词云

  ⑥结巴

  二、数据采集

  我用pyspider抓取了沪西网的首页文章。文章抓取期为2012年建站至2018年11月1日,共计约5万篇文章。捕获7个信息字段:文章标题、作者、发表时间、评论数、采集

数、摘要和文章链接。

  1. 目标网站分析

  这是要爬取的网页界面。您可以看到它是通过 AJAX 加载的。

  

  

  右键打开开发者工具查看翻页规则。可以看到 URL 请求是 POST 类型的。下拉到底部查看表单数据。要提交的表单只有 3 个参数。尝试后,只需提交页面参数即可成功获取页面信息。另外两个参数无关,所以页面爬取的构建非常简单。

  

  接下来,将选项卡切换到预览和响应以查看网页内容,可以看到数据位于数据字段中。total_page是2004,表示文章内容一共2004页,每页有25篇文章,一共大概5万条,就是我们要爬取的数量。

  

  以上,我们已经找到了我们需要的内容,接下来就可以开始构建爬虫了。整个爬取的思路比较简单。

  2. pyspider 介绍

  和上一篇不同的是,这里我们使用了一个新的爬虫工具,叫做:pyspider框架。由中国binux大神开发,GitHub Star数超过12K,足以证明其受欢迎程度。可以说学习爬虫不能用这个框架。

  这个框架在网上有很多介绍和实际案例,这里只是简单介绍一下。

  我们之前的爬虫是在 Sublime 和 PyCharm 等 IDE 窗口中执行的。整个爬取过程可以说是在一个黑盒子里,内部运行的细节也不清楚。pyspider的一大亮点是提供了可视化的WebUI界面,可以清晰的查看爬虫的运行状态。

  

  pyspider的架构主要分为三部分:Scheduler、Fetcher、Processor。Monitor监控整个爬取过程,Result Worker处理最终的爬取结果。

  

  该框架相对易于使用。页面右侧是代码区。首先定义类(Class),然后在其中添加爬虫的各种方法(也称为函数)。左上角显示正在运行的进程,左下角显示输出结果。区域。

  3. 获取数据

  CMD命令窗口执行:pyspider all命令,然后在浏览器中输入::5000/启动pyspider。

  单击创建以创建新项目。命名项目名称:huxiu。因为要爬取的URL是POST类型的,这里可以省略,再添加到代码中即可。再次点击创建完成项目的创建。

  

  新项目建立后,会自动生成一部分模板代码。我们只需要在此基础上修改完善,就可以运行爬虫项目了。现在,简单梳理一下代码编写步骤。

  

  

  这里首先定义了一个Handler主类,整个爬虫项目主要在这个类下完成。然后,就可以在下面的crawl_config属性中写一些爬虫的基本配置,比如Headers、proxy等设置。

  如果你不习惯从函数(def)到类(Class)的代码编写,那么你需要了解类的相关知识,然后我会在单独的文章中介绍。

  下面的 on_start() 方法是程序的入口点,表示程序启动后会首先从这里运行。首先,我们将要爬取的URL传入crawl()方法中,同时将URL修改为虎嗅网之一:

  由于URL是POST请求,我们还需要添加两个参数:method和data。method表示HTTP请求方法,默认为GET,这里我们需要设置为POST;data为POST请求表单参数,只需要添加一个page参数即可。

  接下来通过回调参数定义一个index_page()方法,解析爬取URL成功后crawl()方法返回的Response响应。在后面的 index_page() 方法中,您可以使用 PyQuery 提取响应中所需的内容。具体提取方法如下:

  

  这里网页返回的Response是json格式,需要提取的信息存放在data key value中,由一段HTML代码组成。我们可以使用 response.json['data'] 获取 HTML 信息,然后使用 PyQuery 和 CSS 语法来提取所需的信息,例如文章标题、链接和作者。这里使用了列表生成公式,可以精简代码,转换成方便的列表格式,方便后续存储在MongoDB中。

  让我们输出并检查第2页的提取结果:

  

  可以看到成功获取到了需要的数据,然后就可以保存了。可以选择输出到CSV、MySQL、MongoDB等,这里我们选择保存到MongoDB。

  

  上面定义了一个on_result()方法,专门用来获取返回的结果数据。这用于接收上面 index_page() 返回的数据。在这个方法中,定义了一个存储在MongoDB中的方法,以将其保存在MongoDB中。

  接下来,我们来测试一下整个爬取和存储过程。点击左上角的运行,可以顺利运行单个网页的爬取、解析和存储。结果如下:

  

  以上完成了单个页面的爬取。接下来,我们需要抓取所有 2000 多页的内容。

  需要修改两个地方,首先是在on_start()方法中将for循环的第3页改为2002,修改后如果我们直接点击run,会发现还是只能爬取第2页的结果。

  这是因为 pyspider 使用 URL 的 MD5 值作为唯一 ID 号。如果ID号相同,则视为同一个任务,不会再次爬取。由于 GET 请求的分页 URL 通常不同,ID 号也会不同,因此自然可以抓取多个页面。但是这里POST请求的页面URL是一样的,所以爬取第2页后,后面的页面就不会被爬取了。

  有解决办法吗?当然还有,我们需要再次记下ID号的生成方法,方法很简单,在on_start()方法前添加如下2行代码:

  

  这样我们再次点击run就可以成功爬取2000页的结果。我在这里捕获了 49,996 个结果,大约需要 2 个小时才能完成。

  

  以上,数据采集完成。一旦我们有了数据,我们就可以开始分析,但在此之前,我们需要简单地清理和处理数据。

  三、数据清洗处理

  首先,我们需要从 MongoDB 读取数据并将其转换为 DataFrame。

  

  我们来看一下数据的整体情况,可以看到数据的维度是49996行×8列。发现有多余一列无用_id需要删除,name列还有一些特殊符号,比如©需要删除。另外,数据格式都是Object字符串格式。您需要将评论和采集

夹列更改为数字格式,将 write_time 列更改为日期格式。

  

  代码实现如下:

  

  接下来我们看一下数据是否有重复,如果有,则需要删除。

  

  然后,我们再添加两列数据,一列是文章标题长度列,另一列是年份列,方便后续分析。

  

  以上,基本的数据清洗过程就完成了,可以开始对这9列数据进行分析了。

  四、描述性数据分析

  一般来说,数据分析主要分为四类:“描述性分析”、“诊断性分析”、“预测性分析”和“规范性分析”。“描述性分析”是一种统计方法,用于概括和表达事物的整体情况,以及事物之间的关系,以及事物之间的关系。它是这四种类型中最常见的数据分析类型。通过统计处理,可以用几个统计值来表示一个集合的集中度(如平均值、中位数和众数等)和离散度(反映数据的波动性,如方差、标准差等)数据的。.

  在这里,我们主要进行描述性分析,数据主要是数值数据(包括离散变量和连续变量)和文本数据。

  1. 大局

  我们先来看看整体情况。

  

  这里使用 data.describe() 方法对数值变量进行统计分析。由以上可以简要得出以下结论:

  ① 读者评价和采集

热情不高。大多数文章(75%)有十几条评论,只有几十条采集

。与一些微信大V公众号的百万阅读、数万评论和采集

相比,虎兄网确实是比较小众的。不过,也正是因为小众,它也受到了一些人的喜爱。

  ②评论最多的文章有2376篇,采集

最多的文章有1113篇,说明还有一些潜在的热门或者优质的文章。

  ③最长的文章标题为224个字符,大部分文章标题在20个字符左右,标题不宜过长或过短。

  对于非数字变量(name、write_time),使用describe()方法会生成另一个汇总统计。

  

  unique 表示唯一值的个数,top 表示出现次数最多的变量,freq 表示变量出现的次数,因此很容易得出以下结论:

  ①文章来源方面,5万篇文章共有3162位作者投稿。其中,他们的官网“虎嗅”写得最多,超过10000条,这也是理所当然的。

  ②从文章发表时间来看,最早的文章是2012年4月3日。6年多来,文章数量最多的一天是2014年7月10日,共发表文章274篇。

  2. 不同时期发表文章数的变化

  

  可以看出,在以季度为时间尺度的六年中,前几年发表的文章数量相对稳定,约1750篇,个别季度的数量激增至2000多篇。2016年之后,文章数量开始增加到2000多条,这可能与网站人气增加有关。第一季度和最后一个季度的日期不完整,因此数量相对较少。

  具体代码实现如下:

  

  3. 文章合集TOP10

  接下来,我们更关心的问题是:在数以万计的文章中,哪些更好,哪些更受欢迎?

  

  这里,“采集

夹”(采集

夹的数量)被选为测量标准。毕竟一般的好文章,大家都会有采集

的习惯。

  第一名“看完这10本书,你就能站在智商蔑视链的顶端。” 以1113件藏品居首位,遥遥领先于后者。看来大家都在珍惜“我想快点爬上去”。在人生的巅峰,“看到每个人的渺小”的想法。打开这篇文章的链接,文章中提到了这些书:《思考,快与慢》,《思考技巧》,《麦肯锡的第一课:职场新人的逻辑思维能力》等。我没有读过其中任何一篇。这辈子,似乎很难达到人生巅峰。

  发现两个有趣的地方:

  ①文章标题比较简短。

  ②虽然文章采集

量比较高,但评论不多。我想这是因为每个人都喜欢参加派对吗?

  4. 历年文章TOP3合集

  了解了文章的整体排名后,我们再来看看历年文章的排名。在这里,每年都会选出采集

最多的 3 篇文章。

  

  

  可以看出,文章的采集

量基本上是逐年增加的,但2015年的3篇文章的采集

量是最高的,在总排名中占据前3位。不知道今年的文章有什么特别之处。

  上面只列出了文章标题的一小部分,可以看到标题还是比较标准的。关于标题的重要性,有一句流行的说法:“一篇好文章有一半的标题”。一个好的标题可以大大增强文章的传播力和吸引力。文章标题虽然只有几个叉号,但如果你记住的话,里面的花招还是不少的。

  代码实现如下:

  

  

  (1) TOP20 最具生产力的作者

  以上,我们从采集

指数分析,下面,我们关注发表文章的作者(个人/媒体)。前面提到,发表最多的文章来自虎嗅官网,一万多篇。这里我们筛选出官方媒体,看看是否还有其他更高效的作者。

  

  可以看出,前20位作者发表的帖子数量相差不大。拥有“娱乐之都”、“东域”、“发条橙”等众多媒体账号;还有虎溪官网团队的作者:发条橙、周超辰、张博文等;还有一些独立作者:冒充FBI、孙永杰等,你可以试试关注这些高产作者。

  代码实现如下:

  

  (2) TOP 10 文章采集

最平均的作者

  我们关注一个作者,不仅是因为文章的高效率,还有文章的质量。这里我们选择“文章的平均采集

数”(总采集

数/文章数),看看谁是文章水平相对较高的作者。

  在这里,为了避免“一个作者只写一篇高收录文章”不代表其真实水平的情况,我们将筛选范围设置为至少发表了5篇文章的作者。

  

  可以看出,前10位作者包括:重读遥遥领先,两位高产优质辩手李牧阳和范通代老板,以及大众熟悉的高晓松和宁南山。

  如果将此列表与上述高产作者列表进行比较,您会发现他们并未出现在此列表中。与数量相比,质量可能更重要。

  接下来,我们来看看排名靠前的重读写的高采集

文章。

  

  他们居然写了所有关于马老板家的文章。

  了解了前十名作者后,我们再来看看排名后十名的作者。

  

  对比一下,他们的文章集就比较简陋了。特别好奇最后一个作者,杨业萌,他写了7篇文章,却连一个合集都没有。

  让我们看看他写了什么文章。

  

  我最初用英文写了所有文章。人们似乎不喜欢阅读英文文章。

  具体实现代码:

  

  5. 评论最多的前 10 篇文章

  说完采集

量。接下来,我们来看看评论最多的文章。

  

  这些文章大部分都与三星有关。这些文章大部分是2014年的,三星那些年好像很火,不过这两年三星在国内基本看不到三星的影子。世界变化真的很快。

  发现了两个有趣的现象。

  ① 上面这批关于三星和之前阿里的文章,他们“占据”了评论和采集

列表,结合知乎上一篇关于虎嗅介绍的文章:这其实是虎嗅的情况,而且好像是能够发现一些微妙的东西。

  ②文章评论数和采集

数这两个指标几乎呈现出极端趋势。评论多的文章采集

少,评论少的文章采集

多。

  让我们进一步观察这两个参数之间的关系。

  

  可以看到,大部分的点都位于左下角,这意味着这些文章的采集

和评论数量相对较少。但是,也有少量的离群点位于顶部和右侧,表明这些文章呈现出“多评论,少采集

”或“少评论,多采集

”的特点。

  6. 文章标题长度

  接下来我们来看看文章标题的长度和采集

数有没有关系。

  

  大致可以看出两种现象:

  ① 采集

量高的文章标题比较短(右边部分比较分散)。

  ②标题很长的文章采集

量很低(左边形成一条竖线)。

  看来起标题的时候最好不要把一篇文章开始太长。

  实现代码如下:

  

  7. 标题格式

  接下来我们看看作者在文章标题的开头有没有对标点符号的偏好。

  

  如您所见,50,000 篇文章中的大多数都具有声明性标题。三分之一(34.8%)的文章标题使用问号“?”,而只有5%的文章使用感叹号“!”。

  通常,问号让人感到好奇,想要打开文章;而感叹号则给人一种紧张或压抑的感觉,让人不想打开。所以,尽量多用问号,少用感叹号。

  8. 文字分析

  最后,从这5万篇文章的标题和摘要中,我们来看看虎嗅网的文章主要集中在哪些学科领域。

  这里我们先用jieba分词包对标题进行分词,然后再用WordCloud制作词云图。由于虎嗅网中含有“老虎”二字,故选用虎头头像。(关于jieba和WordCloud这两个包,后面会详细介绍)

  

  可以看到文章的主题内容侧重于:互联网、知名公司、电子商务、投资。这大致符合网站本身的核心内容,即“关注互联网和移动互联网上一系列明星公司的兴衰,行业大潮的力量和趋势,以及互联网和移动互联网改造传统产业。”

  实现代码如下:

  

  

  上面的关键词是这几年的总体概况,科技互联网行业的发展每年都不一样,那么我们来看看这些年的一些关键词,通过这些关键词 看看这几年互联网行业、技术热点、知名企业的不同变化。

  

  可以看到每年的关键词都有一些相似之处,但也有不同的地方:

  ① 中国互联网、公司、苹果、腾讯、阿里等热门关键词一直很火。这些公司确实是稳定的一批。

  ②每年都会出现新的热点:比如2013年的微信(刚刚开始流行),2016年的直播(各大直播平台纷纷涌现),2017年的iPhone(上市十周年),2018年的小米(上市))。

  ③新的热点技术不断涌现:2013-2015年的O2O,2016年的VR,2017年的AI,2018年的“区块链”,这些前沿技术也成为了近几年的一个热词。

  通过这张图,我们可以看到近年来科技互联网行业、明星企业、热点信息的变化。

  五、总结

  1. 本文简要分析了虎嗅网5万篇文章的信息,对近年来日新月异的科技互联网有一个大致的了解。

  2.发现那些优秀的文章和作者,可以节省宝贵的时间和成本。

  3.一篇文章要广为传播,文章本身的质量和标题就一分为二。相信文章中的50,000个标题可以带来一些启发。

  4. 本文没有做深入的文本挖掘,文本挖掘可能比数据挖掘涵盖的信息量更大,更有价值。执行这些分析需要机器学习和深度学习的知识,这些知识将在以后的学习中得到补充。

  本文作者:苏克1900

  -DataHunter 用于数据分析展示-

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线