今年五一,是12年之后第一次达到5天长度的五一假期。尤其这一次我们是经历了一次疫情的冲击,在4月8号武汉解放之后,突然前面有一个五一的中长假在等待着我们,那一系列的数据会发生怎样的变化?在防控常态化的背景下,旅游业的复苏会呈现出怎样的一种局面?为更科学地进行评估,我们对北京、上海、成都、武汉等旅游热门景点评论数据进行来数据爬取。
用数据说话是数据分析的意义所在,同时也不要沉溺于数据,之前文章(Python揭秘为什么你看到的文字评论和图片都是最好的)已经讲过,你看到的数据可能也未必是真实的。
本篇推文将对热门景点的评论数据进行分析,文章将分三步走:
- 数据获取
- 数据处理
- 数据可视化分析
以下是具体步骤和代码实现:
数据获取
今天我们爬取对象为携程旅游网,通过对网址进行分析,发现一个特别有意思的地方,无论那个城市的景点,或者用户的那一页进行评论,URL都是一样的。我们对Request Payload进行分析,发现每一页的参数是有变化的,可以断定是通过改变这些参数来改变接口返回的结果。
分析明白了网页的规律,我们就来爬取数据吧,需要完整版数据的同学可以在公众号后台回复:五一数据。
核心代码
url ='https://sec-m.ctrip.com/restapi/soa2/12530/json/viewCommentList?_fxpcqlniredt=09031027111681987287' UserAgent = getHeaders() headers = { 'Content-type': 'application/json;charset=UTF-8', 'Origin': 'https://piao.ctrip.com', 'Referer': 'https://piao.ctrip.com/dest/t1412255.html', 'accept': '*/*', "User-Agent":UserAgent} df = pd.DataFrame(None) try: html = requests.post(url,headers=headers,data =json.dumps(data)).text global test test =json.loads(html)['data'] data=json.loads(html)['data']['comments'] data_len = len(data) for i in range(data_len): data_i =data[i] df_temp = json_normalize(data_i) df = df.append(df_temp) except: pass
数据结果
数据处理
对于获取的数据,需要进一步处理,以满足分析分析的需求,我们主要做的数据处理步骤如下:
- 删除重复项
- 删除不需要的列
- 处理不规范的数据格式
代码如下
im