网页视频抓取工具 知乎(本文爬取了虎嗅网建站至今共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 用于数据分析展示-