爬取知乎‘货拉拉女乘客坠车事件’话题,分析网友对此事件的看法

python学习网 2021-03-12 00:38:05

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。

以下文章来源于Python极客专栏 ,作者锋小刀

前言

最近的“货拉拉女乘客坠车死亡事件”的涉事司机被批捕以及事件细节公布的消息被冲上热搜第一。

 

据人民日报的报道:

3月3日,长沙市公安局高新区分局通过其官方微信发布关于周某春涉嫌过失致人死亡案件的情况通报,通报显示,检察机关对周某春批准逮捕。

自事件发生以来,网上评论不断,我用python爬取知乎热门问题的回答,看一下网友对此事件的看法。

 

一、爬虫

本次只要爬取知乎作者、作者id、回答时间、赞同数、底下评论数、回答内容等数据,这里只讲解思路和对几处关键地方作出解释。

知乎是一个动态加载的网页,所以需要用开发者工具进行抓包:

 

真实url中的offset参数会发生递增变化,每次增加5。

https://www.zhihu.com/api/v4/questions/447340905/answers?include=data%5B%2A%5D.is_normal%2Cadmin_closed_comment%2Creward_info%2Cis_collapsed%2Cannotation_action%2Cannotation_detail%2Ccollapse_reason%2Cis_sticky%2Ccollapsed_by%2Csuggest_edit%2Ccomment_count%2Ccan_comment%2Ccontent%2Ceditable_content%2Cattachment%2Cvoteup_count%2Creshipment_settings%2Ccomment_permission%2Ccreated_time%2Cupdated_time%2Creview_info%2Crelevant_info%2Cquestion%2Cexcerpt%2Cis_labeled%2Cpaid_info%2Cpaid_info_content%2Crelationship.is_authorized%2Cis_author%2Cvoting%2Cis_thanked%2Cis_nothelp%2Cis_recognized%3Bdata%5B%2A%5D.mark_infos%5B%2A%5D.url%3Bdata%5B%2A%5D.author.follower_count%2Cbadge%5B%2A%5D.topics%3Bdata%5B%2A%5D.settings.table_of_content.enabled&limit=5&offset=5&platform=desktop&sort_by=default
https://www.zhihu.com/api/v4/questions/447340905/answers?include=data%5B%2A%5D.is_normal%2Cadmin_closed_comment%2Creward_info%2Cis_collapsed%2Cannotation_action%2Cannotation_detail%2Ccollapse_reason%2Cis_sticky%2Ccollapsed_by%2Csuggest_edit%2Ccomment_count%2Ccan_comment%2Ccontent%2Ceditable_content%2Cattachment%2Cvoteup_count%2Creshipment_settings%2Ccomment_permission%2Ccreated_time%2Cupdated_time%2Creview_info%2Crelevant_info%2Cquestion%2Cexcerpt%2Cis_labeled%2Cpaid_info%2Cpaid_info_content%2Crelationship.is_authorized%2Cis_author%2Cvoting%2Cis_thanked%2Cis_nothelp%2Cis_recognized%3Bdata%5B%2A%5D.mark_infos%5B%2A%5D.url%3Bdata%5B%2A%5D.author.follower_count%2Cbadge%5B%2A%5D.topics%3Bdata%5B%2A%5D.settings.table_of_content.enabled&limit=5&offset=10&platform=desktop&sort_by=default

数据存储在json格式的文件文件中,所有我们直接把数据类型转换为json的数据类型,然后用json方法提取父节点,再用循环进一步提取。

response = requests.get(url=url, headers=headers).json()
data = response['data']
for list_ in data:
    name = list_['author']['name']

我们获取的回答时间是一组时间戳,所以我们需要进行转换。

created_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(created_time))

我们提取了回答内容,但提取的内容存在很多标签和链接,所以我们需要用正则表达式去除。

 

# 正则表达式提取,这个正则表达式表示只提取中文和符号
content = ''.join(re.findall("[\u3002\uff1b\uff0c\uff1a\u201c\u201d\uff08\uff09\u3001\uff1f\u300a\u300b\u4e00-\u9fa5]", content)) 

二、数据可视化

导入模块和读取数据:

import pandas as pd
import stylecloud
from IPython.display import Image

df = pd.read_csv('D:\数据小刀\爬虫④\知乎回答\知乎回答.csv')
df.head()

 

删除重复值和缺失值,并查看数据格式:

df = df.drop_duplicates()
df.dropna(axis=0, how='any', inplace=True)
df.info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 2935 entries, to 2999
Data columns (total columns):
 #   Column  Non-Null Count  Dtype 
---  ------  --------------  ----- 
 0   作者      2935 non-null   object
 1   作者id    2935 non-null   object
 2   发布时间    2935 non-null   object
 3   赞同数     2935 non-null   int64 
 4   底下评论    2935 non-null   int64 
 5   回答内容    2935 non-null   object
dtypes: int64(2), object(4)
memory usage: 160.5KB

赞同数最高的十个回答,最高赞同数为25849:

df["赞同数"] = df["赞同数"].astype('float')
df.sort_values('赞同数',inplace=True,ascending=False)
df4 = df.reset_index(drop=True) 
df4[:10]

 

我们看下最高赞同数的回答:

这位货拉拉司机还是挺难的,大周六晚上还在搬家,这位女孩来来回回搬了趟,一共十来分钟的路程,光是搬上车就用了三十多分钟,每一趟司机可能都要安慰自己这是最后一趟。在行驶途中女孩还拒绝了卸车服务,意思就是到了地方还要自己搬个趟。货拉拉的超时费要司机线下和顾客协商收取,之前司机提醒女孩超时要收费的时候女孩“未予理睬”,估计司机心里也犯嘀咕。司机来来回回得接近一个多小时,也就只收元,算上各种成本,时薪也就十来块,估计是有点郁闷了。赚点辛苦钱可真是不容易,都九点多了,司机满脑子想着是如何接下一单,不愿意和女孩多纠结,结果为了节约这四分钟走了近路,女孩突然跳车了。司机下车一分钟不到就打了,不知道打的时候是什么心情,估计怀疑老天爷在针对他。以个人朴素的观点来看,司机态度不好不假,但过失致人死亡的前提也要是能预见到自己的行为可能导致这种后果。这后果谁也预料不到,写小说你敢写乘客会因此直接跳车,那也是绝对要被读者喷的,司机根本就没法预见到接下来会发生致人死亡的事情。至于为什么没有急刹,急刹对于头都伸出去的副驾会造成什么,有驾照的人应该都懂。一个无敌甩尾把女孩甩回车内的操作只存在小说里,司机点刹了,甚至还打了双闪,这操作已经非常合理了。但凡他有急刹的行为,现在某些平台的舆论已经是他在故意杀人了。目前只是批捕,法院还未必能判下来,我觉得法律不该用一套完美的流程来苛求司机的行为,希望最终不要有刑事责任。司机急刹:操作不当过失致人死亡司机点刹:过失致人死亡司机:要不还是我跳吧?司机也是底层弱势人民,不是迫于生活,不是想让自己家里人日子能过得更好点,谁会在周六晚上快十点了还在想着接下一单呢?希望底层人士这个身份能帮到他,起码让舆论能缓和一点。说到底,这起五十块钱引发的悲剧,根本原因还是资本为了赚钱,把一切问题抛给了全社会;平台为了流量,也更喜欢引发各类人群的冲突,最终结果就是所有人都在为此买单。希望这个社会能更友善一点,润滑剂多一点,这样的悲剧才能少一点。

词云展示:

阅读(2526) 评论(0)