【旅游景点分析】--从数据搜集到清洗再到可视化呈现

分析背景

近两年由于日本签证放宽了许多,许多小伙伴出国游会选择日本作为目的地,同时现在许多旅游平台都有一站式服务,所以大多旅客会选择自助游,那么自助游便会涉及到“酒店、机票、火车票、攻略、景点门票、租车、美食、购物”的需求,这种一站式需求目前做的比较好的有:携程、去哪儿旅行、同程、途牛等旅游平台,客路从服务上看主打国外自由行,在景点、小团游、独特体验、美食、交通五大方面给到用户推荐和选择,现从客路的五大活动入手分析自助旅游不可错过的攻略,Let's go~


分析思路

1、以日本为例,获取五种活动分类各自所含活动的网址

活动分类:景点门票/表演、一日游/小团游、特色活动/体验、地道美食、当地交通/wifi

2、获取每种分类里所有网址的基本信息,基本信息包括:title,价格,参加人数,是否支持退改,评价数目,评分

3、每种分类用plt做散点图分析价格与评分的关系,做直方图查看价格前十、评分前十、评价数目前十的活动

4、用pyecharts做交互式图表

5、将点评数作为频次,用活动名做词云图


导入基本的工具包

import numpy as np

import pandas as pd

import requests

from bs4 import BeautifulSoup

import matplotlib.pyplot as plt

import warnings

warnings.filterwarnings('ignore')


1、获取五种活动分类各自所含活动的网址

注:左右滑动查看完整代码

 
 
#获取分类1所有活动的url	
type1_lst = []	
for i in range(1,6):	
    url = 'https://www.klook.com/zh-CN/search?query=日本&template_id=1&tag_id=33%2C122%2C139%2C34%2C9%2C35%2C38&city_id=398%2C15%2C28%2C29%2C30%2C32%2C36%2C71%2C343%2C373&start='+str(i)+'&type=country'	
    type1_lst.append(url)	
print(type1_lst)	
#获取分类2所有活动的url	
type2_lst = []	
for i in range(1,10):	
    url = 'https://www.klook.com/zh-CN/search?query=%E6%97%A5%E6%9C%AC&template_id=2&city_id=398%2C15%2C28%2C29%2C30%2C32%2C36%2C71%2C343%2C373&start='+str(i)+'&type=country'	
    type2_lst.append(url)	
print(type2_lst)	
#获取分类3所有活动的url	
type3_lst = []	
for i in range(1,35):	
    url = 'https://www.klook.com/zh-CN/search?query=%E6%97%A5%E6%9C%AC&template_id=3&city_id=398%2C15%2C28%2C29%2C30%2C32%2C36%2C71%2C343%2C373&start='+str(i)+'&type=country'	
    type3_lst.append(url)	
print(type3_lst)	
#获取分类4所有活动的url	
type4_lst = []	
for i in range(1,8):	
    url = 'https://www.klook.com/zh-CN/search?query=%E6%97%A5%E6%9C%AC&template_id=4&city_id=398%2C15%2C28%2C29%2C30%2C32%2C36%2C71%2C343%2C373&start='+str(i)+'&type=country'	
    type4_lst.append(url)	
print(type4_lst)	
#获取分类5所有活动的url	
type5_lst = []	
for i in range(1,12):	
    url = 'https://www.klook.com/zh-CN/search?query=%E6%97%A5%E6%9C%AC&template_id=5&city_id=398%2C15%2C28%2C29%2C30%2C32%2C36%2C71%2C343%2C373&start='+str(i)+'&type=country'	
    type5_lst.append(url)	
print(type5_lst)
 
 
#此处获取活动分类1一共115个网址	
pro1_lst = []	
n = 1	
for url in type1_lst:	
    ri = requests.get(url)	
    soupi = BeautifulSoup(ri.text,'lxml')	
    info = soupi.find('div',class_='activity_section').find('div',class_='act_list').find_all('a')	
    for i in info:	
        urli = 'https://www.klook.com'+i['href']	
        pro1_lst.append(urli)	
        print('成功获取第%i条网址'%n)	
        n+=1	
print(pro1_lst)    	
#此处获取活动分类2一共200个网址	
pro2_lst = []	
n = 1	
for url in type2_lst:	
    try:	
        ri = requests.get(url)	
        soupi = BeautifulSoup(ri.text,'lxml')	
        info = soupi.find('div',class_='activity_section').find('div',class_='act_list').find_all('a')	
        for i in info:	
            urli = 'https://www.klook.com'+i['href']	
            pro2_lst.append(urli)	
            print('成功获取第%i条网址'%n)	
            n+=1	
    except:	
        continue	
print(pro2_lst)  	
#此处获取活动分类3一共177个网址	
pro3_lst = []	
n = 1	
for url in type3_lst:	
    try:	
        ri = requests.get(url)	
        soupi = BeautifulSoup(ri.text,'lxml')	
        info = soupi.find('div',class_='activity_section').find('div',class_='act_list').find_all('a')	
        for i in info:	
            urli = 'https://www.klook.com'+i['href']	
            pro3_lst.append(urli)	
            print('成功获取第%i条网址'%n)	
            n+=1	
    except:	
        continue	
print(pro3_lst)  	
#此处获取活动分类4一共154个网址	
pro4_lst = []	
n = 1	
for url in type4_lst:	
    try:	
        ri = requests.get(url)	
        soupi = BeautifulSoup(ri.text,'lxml')	
        info = soupi.find('div',class_='activity_section').find('div',class_='act_list').find_all('a')	
        for i in info:	
            urli = 'https://www.klook.com'+i['href']	
            pro4_lst.append(urli)	
            print('成功获取第%i条网址'%n)	
            n+=1	
    except:	
        continue	
print(pro4_lst)  	
#此处获取活动分类5一共257个网址	
pro5_lst = []	
n = 1	
for url in type5_lst:	
    try:	
        ri = requests.get(url)	
        soupi = BeautifulSoup(ri.text,'lxml')	
        info = soupi.find('div',class_='activity_section').find('div',class_='act_list').find_all('a')	
        for i in info:	
            urli = 'https://www.klook.com'+i['href']	
            pro5_lst.append(urli)	
            print('成功获取第%i条网址'%n)	
            n+=1	
    except:	
        continue	
print(pro5_lst) 

2、 获取每种分类里所有网址的基本信息
3、每种分类用plt做散点图分析价格与评分的关系,直方图查看价格前十、评分前十、评价数目前十的活动 (二三同步进行)

以下是对“景点门票/表演”的分析

 
 
#获取pro1共90个活动的基本信息	
def get_data1(urli):	
    headers={#此处可放入自己使用的计算机浏览网址的headers	
         }	
    ri = requests.get(url=urli,headers=headers)	
    soupi = BeautifulSoup(ri.text,'lxml')	
    dic = {}	
    info = soupi.find('div',class_='white_bg')	
    info1 = info.find('ul',class_='act_icons t14').find_all('li')	
    info2 = info.find('div',class_='m_border_gray m_bg_white shadow_box__1')	
    dic['title']=info.find('h1').text	
    for i in info1:	
        try:	
            infoi=[]	
            i = i.text.replace('\n','')	
            infoi.append(i)	
            dic['是否支持退改']=infoi[0]	
            dic['使用方式']=infoi[1]	
            dic['活动时长']=infoi[2].split(':')[1]	
            dic['使用期限']=infoi[3]	
            dic['入场方式']=infoi[4]	
        except:	
            continue	
    dic['价格']=info2.find('p',class_='price').find('span').text	
    dic['参加人数']=info2.find('ul',class_='pay_otherinfo t_gray').find('div',class_='left_box').text.replace('\n','').split('人')[0]	
    dic['评分']=info2.find('ul',class_='pay_otherinfo t_gray').find('span',class_='m_star_v2 t12').text.replace('\n','')	
    dic['评价数目']=info2.find('ul',class_='pay_otherinfo t_gray').find('span',class_='t12 u_t_gray_6').text.replace('\n','').replace('(','').split('条')[0]	
    return dic	
info1_list = []	
n=1	
for url in pro1_lst:	
    try:	
        #print(url)	
        info1_list.append(get_data1(url))	
        print('成功获取第%i个网址的基本信息'%n)	
        n+=1	
    except:	
        continue

数据预处理:建立索引,转换数据类型,数据清洗


 
 
df1=pd.DataFrame(info1_list)	
df1.index=df1['title']	
df1['评价数目']=df1['评价数目'].str.replace(',','')	
df1['评分']=df1['评分'].str.replace(',','')	
df1['价格']=df1['价格'].str.replace(',','')	
df1['评分']=df1['评分'].astype(np.float)	
df1['评价数目']=df1['评价数目'].astype(np.int)	
df1['价格']=df1['价格'].astype(np.int)	
df1

可视化:做散点图查看价格、评分、评价数目的关系

 
 
plt.title('分类1活动价格评分气泡图')	
plt.scatter(df1['价格'],df1['评分'],s=df1['评价数目']/100,alpha=0.8,cmap='Reds')	
plt.grid()	
#从散点图可以看出评分多集中在4.5-4.8分,价格集中在500元内,评论多在500元左右的活动

640?wx_fmt=png

 
 
plt.title('价格分布图')	
plt.hist(df1['价格'],bins=10)	
plt.grid()	
#可以看出大部分活动价格集中在500内


640?wx_fmt=png

 
 
#查看价格前十的活动	
dptop10=df1.sort_values(by='价格',ascending=False).iloc[:10]	
dptop10['价格'].plot(kind='bar',figsize=(10,5),color='y',grid=True)	
#可以看出高价格主要是海洋馆&住宿和环球影城皇家套票


640?wx_fmt=png

 
 
#查看评分前十的活动	
dptop10=df1.sort_values(by='评分',ascending=False).iloc[:10]	
dptop10['评分'].plot(kind='bar',figsize=(10,5),color='r',grid=True)	
#可看出高评分主要集中在小丸子门票、海洋馆门票、植物园门票、读卖乐园门票、艺伎宴


640?wx_fmt=png

 
 
#查看评价数目前十的活动	
dptop10=df1.sort_values(by='评价数目',ascending=False).iloc[:10]	
dptop10['评价数目'].plot(kind='bar',figsize=(10,5),color='b',grid=True)	
#评价数目可以在一定程度上反映活动的热门程度,此处可以看出环球影城和迪士尼、海洋馆是最受欢迎的景点


640?wx_fmt=png

以上便是对“景点门票/表演”的分析,从分析结果看建议做攻略的时候,景点可以考虑环球影城、海洋馆、迪士尼、静冈樱桃小丸子乐园、冲绳东南植物园、东京读卖乐园、东京大森茶屋艺伎宴等地,属于热门且评分较高的景点,具体可视出游路线而定~


以下是对“一日游/小团游”的分析

 
 
#获取pro2共153个活动的基本信息	
def get_data1(urli):	
    headers={#此处可放入自己使用的计算机浏览网址的headers	
        }	
    ri = requests.get(url=urli,headers=headers)	
    soupi = BeautifulSoup(ri.text,'lxml')	
    dic = {}	
    info = soupi.find('div',class_='white_bg')	
    info1 = info.find('ul',class_='act_icons t14').find_all('li')	
    info2 = info.find('div',class_='m_border_gray m_bg_white shadow_box__1')	
    dic['title']=info.find('h1').text	
    for i in info1:	
        try:	
            infoi=[]	
            i = i.text.replace('\n','')	
            infoi.append(i)	
            dic['是否支持退改']=infoi[0]	
            dic['使用方式']=infoi[1]	
            dic['活动时长']=infoi[2].split(':')[1]	
            dic['使用期限']=infoi[3]	
            dic['入场方式']=infoi[4]	
        except:	
            continue	
    dic['价格']=info2.find('p',class_='price').find('span').text	
    dic['参加人数']=info2.find('ul',class_='pay_otherinfo t_gray').find('div',class_='left_box').text.replace('\n','').split('人')[0]	
    dic['评分']=info2.find('ul',class_='pay_otherinfo t_gray').find('span',class_='m_star_v2 t12').text.replace('\n','')	
    dic['评价数目']=info2.find('ul',class_='pay_otherinfo t_gray').find('span',class_='t12 u_t_gray_6').text.replace('\n','').replace('(','').split('条')[0]	
    return dic	
info2_list = []	
n=1	
for url in pro2_lst:	
    try:	
        #print(url)	
        info2_list.append(get_data1(url))	
        print('成功获取第%i个网址的基本信息'%n)	
        n+=1	
    except:	
        continue


数据预处理:建立索引,转换数据类型,数据清洗

 
 
df2=pd.DataFrame(info2_list)	
df2.index=df2['title']	
df2['评价数目']=df2['评价数目'].str.replace(',','')	
df2['评分']=df2['评分'].str.replace(',','')	
df2['价格']=df2['价格'].str.replace(',','')	
df2['评分']=df2['评分'].astype(np.float)	
df2['评价数目']=df2['评价数目'].astype(np.int)	
df2['价格']=df2['价格'].astype(np.int)	
df2

可视化:做散点图查看价格、评分、评价数目的关系

 
 
plt.title('分类2活动价格评分气泡图')	
plt.scatter(df2['价格'],df2['评分'],s=df2['评价数目']/100,alpha=0.8,cmap='Reds')	
plt.grid()	
#从散点图可以看出评分多集中在4-4.8分,价格集中在500元左右,评论多在300元内的活动


640?wx_fmt=png

 
 
plt.title('价格分布图')	
plt.hist(df2['价格'],bins=10)	
plt.grid()	
#可以看出大部分活动价格集中在300-800元


640?wx_fmt=png

 
 
#查看价格前十的活动	
dptop10=df2.sort_values(by='价格',ascending=False).iloc[:10]	
dptop10['价格'].plot(kind='bar',figsize=(10,5),color='y',grid=True)	
#可以看出高价格主要是大阪、京都&奈良、广岛&宫岛等地的一日游包车活动


640?wx_fmt=png

 
 
#查看评分前十的活动	
dptop10=df2.sort_values(by='评分',ascending=False).iloc[:10]	
dptop10['评分'].plot(kind='bar',figsize=(10,5),color='r',grid=True)	
#可看出高评分主要集中东京筑地市场半日游、四国计程车乌龙面之旅、富士山等地巴士游、大阪黑门市场美食徒步旅、户隐高原巴士5日游等活动


640?wx_fmt=png

 
 
#查看评价数目前十的活动	
dptop10=df2.sort_values(by='评价数目',ascending=False).iloc[:10]	
dptop10['评价数目'].plot(kind='bar',figsize=(10,5),color='b',grid=True)	
#评价数目可以在一定程度上反映‘一日游/小团游’的热门程度,此处可以看出大阪周游券、欢迎来大阪卡、关西周游券、展望台电子门票较为热门


640?wx_fmt=png

以上便是对一日游&小团游的分析,从分析结果建议做攻略的时候,从路线上看,出行可考虑购买周游券,包车比较方便但也比较昂贵,在一个城市待几天的话可以考虑购买周游券进行周边游,关西周游券可用于大阪、神户、京都以至奈良、和歌山、高野山的观光旅游,富士山旅游路线建议:忍野八海、御殿场outlet、抹茶体验、河口湖、五合目,富士&箱根:芦之湖、驹岳空中缆车,北海道:旭山动物园、美瑛青池;从评分上看,热门地点有:东京筑地市场、富士山、大阪黑门市场美食、户隐高原、东京SUP立式划桨体验、东京水上皮划艇体验、博多古寺巡礼等活动


以下是对“特色活动/体验”的分析

 
 
#获取pro3共143个活动的基本信息	
def get_data1(urli):	
    headers={#此处可放入自己使用的计算机浏览网址的headers	
        }	
    ri = requests.get(url=urli,headers=headers)	
    soupi = BeautifulSoup(ri.text,'lxml')	
    dic = {}	
    info = soupi.find('div',class_='white_bg')	
    info1 = info.find('ul',class_='act_icons t14').find_all('li')	
    info2 = info.find('div',class_='m_border_gray m_bg_white shadow_box__1')	
    dic['title']=info.find('h1').text	
    for i in info1:	
        try:	
            infoi=[]	
            i = i.text.replace('\n','')	
            infoi.append(i)	
            dic['是否支持退改']=infoi[0]	
            dic['使用方式']=infoi[1]	
            dic['活动时长']=infoi[2].split(':')[1]	
            dic['使用期限']=infoi[3]	
            dic['入场方式']=infoi[4]	
        except:	
            continue	
    dic['价格']=info2.find('p',class_='price').find('span').text	
    dic['参加人数']=info2.find('ul',class_='pay_otherinfo t_gray').find('div',class_='left_box').text.replace('\n','').split('人')[0]	
    dic['评分']=info2.find('ul',class_='pay_otherinfo t_gray').find('span',class_='m_star_v2 t12').text.replace('\n','')	
    dic['评价数目']=info2.find('ul',class_='pay_otherinfo t_gray').find('span',class_='t12 u_t_gray_6').text.replace('\n','').replace('(','').split('条')[0]	
    return dic	
info3_list = []	
n=1	
for url in pro3_lst:	
    try:	
        #print(url)	
        info3_list.append(get_data1(url))	
        print('成功获取第%i个网址的基本信息'%n)	
        n+=1	
    except:	
        continue

数据预处理:建立索引,转换数据类型,数据清洗

 
 
#确定索引,转换数据类型,数据清洗	
df3=pd.DataFrame(info3_list)	
df3.index=df3['title']	
j=0	
for i in df3["价格"]:	
    if '免费' in i:	
        df3["价格"][j]=0	
        j+=1	
df3['评价数目']=df3['评价数目'].astype(str).str.replace(',','')	
df3['评分']=df3['评分'].astype(str).str.replace(',','')	
df3['价格']=df3['价格'].astype(str).str.replace(',','')	
df3['评分']=df3['评分'].astype(np.float)	
df3['评价数目']=df3['评价数目'].astype(np.int)	
df3['价格']=df3['价格'].astype(np.int)	
df3

可视化:做散点图查看价格、评分、评价数目的关系

 
 
plt.title('分类3活动价格评分气泡图')	
plt.scatter(df3['价格'],df3['评分'],s=df3['评价数目']/100,alpha=0.8,cmap='Reds')	
plt.grid()	
#从散点图可以看出评分多集中在4.2-4.8分,价格集中在500元内,评论多在200元左右的活动


640?wx_fmt=png

 
 
plt.title('价格分布图')	
plt.hist(df3['价格'],bins=10)	
plt.grid()	
#可以看出大部分活动价格集中在500元


640?wx_fmt=png

 
 
#查看价格前十的活动	
dptop10=df3.sort_values(by='价格',ascending=False).iloc[:10]	
dptop10['价格'].plot(kind='bar',figsize=(10,5),color='y',grid=True)	
#可以看出高价格主要是迪士尼乐园&迪士尼海洋馆,武士杀阵体验,浅草造型摄影、东京观光直升机、滑雪等活动


640?wx_fmt=png

 
 
#查看评分前十的活动	
dptop10=df3.sort_values(by='评分',ascending=False).iloc[:10]	
dptop10['评分'].plot(kind='bar',figsize=(10,5),color='r',grid=True)	
#可看出高评分主要集中京都东山人力车、青木原树海、武士杀阵体验、濑底岛帆伞&浮潜体验、天妇罗烹饪课&抹茶制作体验、茶道&书法&干果子制作体验、大阪城武士忍者神龟扮演体验、有马温泉体验、池袋动物广场萌宠体验等体验活动。


640?wx_fmt=png

 
 
#查看评价数目前十的活动	
dptop10=df3.sort_values(by='评价数目',ascending=False).iloc[:10]	
dptop10['评价数目'].plot(kind='bar',figsize=(10,5),color='b',grid=True)	
#评价数目可以在一定程度上反映‘特色活动&体验’的热门程度,此处可以看出大阪海洋馆、浅草寺和服体验、大江户温泉、京都和服、新宿机器人餐厅表演、岚山嵯峨野小火车、冲绳美丽海水族馆等活动较为热门,较多人评论


640?wx_fmt=png

以上便是对‘特色活动&体验’的分析,从分析结果看建议做攻略的时候,土豪可以考虑武士杀阵体验,东京观光直升机、滑雪等体验,当然热门的京都东山人力车、青木原树海、濑底岛帆伞&浮潜体验、天妇罗烹饪课&抹茶制作体验、茶道&书法&干果子制作体验、大阪城武士忍者神龟扮演体验、有马温泉体验、池袋动物广场萌宠体验等体验活动评分较高,不容错过,大阪海洋馆、浅草寺和服体验、大江户温泉、京都和服、新宿机器人餐厅表演、岚山嵯峨野小火车、冲绳美丽海水族馆等活动评论人多很多,可见很多人参与,也可纳入攻略计划。


以下是对“地道美食”的分析

 
 
#获取pro4共112个活动的基本信息	
def get_data1(urli):	
    headers={#此处可放入自己使用的计算机浏览网址的headers	
        }	
    ri = requests.get(url=urli,headers=headers)	
    soupi = BeautifulSoup(ri.text,'lxml')	
    dic = {}	
    info = soupi.find('div',class_='white_bg')	
    info1 = info.find('ul',class_='act_icons t14').find_all('li')	
    info2 = info.find('div',class_='m_border_gray m_bg_white shadow_box__1')	
    dic['title']=info.find('h1').text	
    for i in info1:	
        try:	
            infoi=[]	
            i = i.text.replace('\n','')	
            infoi.append(i)	
            dic['是否支持退改']=infoi[0]	
            dic['使用方式']=infoi[1]	
            dic['活动时长']=infoi[2].split(':')[1]	
            dic['使用期限']=infoi[3]	
            dic['入场方式']=infoi[4]	
        except:	
            continue	
    dic['价格']=info2.find('p',class_='price').find('span').text	
    dic['参加人数']=info2.find('ul',class_='pay_otherinfo t_gray').find('div',class_='left_box').text.replace('\n','').split('人')[0]	
    dic['评分']=info2.find('ul',class_='pay_otherinfo t_gray').find('span',class_='m_star_v2 t12').text.replace('\n','')	
    dic['评价数目']=info2.find('ul',class_='pay_otherinfo t_gray').find('span',class_='t12 u_t_gray_6').text.replace('\n','').replace('(','').split('条')[0]	
    return dic	
info4_list = []	
n=1	
for url in pro4_lst:	
    try:	
        #print(url)	
        info4_list.append(get_data1(url))	
        print('成功获取第%i个网址的基本信息'%n)	
        n+=1	
    except:	
        continue

数据预处理:建立索引,转换数据类型,数据清洗

 
 
#确定索引,转换数据类型,数据清洗	
df4=pd.DataFrame(info4_list)	
df4.index=df4['title']	
df4['评价数目']=df4['评价数目'].astype(str).str.replace(',','')	
df4['评分']=df4['评分'].astype(str).str.replace(',','')	
df4['价格']=df4['价格'].astype(str).str.replace(',','')	
df4['评分']=df4['评分'].astype(np.float)	
df4['评价数目']=df4['评价数目'].astype(np.int)	
df4['价格']=df4['价格'].astype(np.int)	
df4

可视化:做散点图查看价格、评分、评价数目的关系

 
 
plt.title('分类4活动价格评分气泡图')	
plt.scatter(df4['价格'],df4['评分'],s=df4['评价数目']/10,alpha=0.8,cmap='Reds')	
plt.grid()	
#从散点图可以看出评分多集中在4.5分左右,价格集中在200-500内,评论多在300元左右的活动

640?wx_fmt=png

 
 
plt.title('价格分布图')	
plt.hist(df4['价格'],bins=10)	
plt.grid()	
#可以看出大部分活动价格集中在100-500元


640?wx_fmt=png

 
 
#查看价格前十的活动	
dptop10=df4.sort_values(by='价格',ascending=False).iloc[:10]	
dptop10['价格'].plot(kind='bar',figsize=(10,5),color='y',grid=True)	
#可以看出美食高价格主要是银座高级和牛牛排、清酒厂、米其林怀石料理、和牛烤肉等店


640?wx_fmt=png

 
 
#查看评分前十的活动	
dptop10=df4.sort_values(by='评分',ascending=False).iloc[:10]	
dptop10['评分'].plot(kind='bar',figsize=(10,5),color='r',grid=True)	
#可看出高评分主要有祗园怀石料理、乌丸御池店、螃蟹&海鲜居酒屋、和牛牛排西餐、北海道拉面、蟹本家、北一札幌拉面等店


640?wx_fmt=png

 
 
#查看评价数目前十的活动	
dptop10=df4.sort_values(by='评价数目',ascending=False).iloc[:10]	
dptop10['评价数目'].plot(kind='bar',figsize=(10,5),color='b',grid=True)	
#评价数目可以在一定程度上反映‘地道美食’的热门程度,此处可以看出玄品河豚、烧肉亭六歌仙、札幌啤酒园、武藏自助餐厅、日本酒专门店、蟹家、矶丸水产、玄品河豚等美食店较为热门,较多人评论


640?wx_fmt=png

以上便是对‘地道美食’的分析,从分析结果看建议做攻略的时候,土豪可以考虑银座高级和牛牛排、清酒厂、米其林怀石料理、和牛烤肉等美食店;从评分看,祗园怀石料理、乌丸御池店、螃蟹&海鲜居酒屋、和牛牛排西餐、北海道拉面、蟹本家、北一札幌拉面等店是满分店,相信味道应该相当不错;从评论数目看,玄品河豚、烧肉亭六歌仙、札幌啤酒园、武藏自助餐厅、日本酒专门店、蟹家、矶丸水产、玄品河豚等美食店较为热门,性价比较高。


以下是对“当地交通/wifi”的分析

 
 
#获取pro5共214个活动的基本信息	
def get_data1(urli):	
    headers={#此处可放入自己使用的计算机浏览网址的headers	
        }	
    ri = requests.get(url=urli,headers=headers)	
    soupi = BeautifulSoup(ri.text,'lxml')	
    dic = {}	
    info = soupi.find('div',class_='white_bg')	
    info1 = info.find('ul',class_='act_icons t14').find_all('li')	
    info2 = info.find('div',class_='m_border_gray m_bg_white shadow_box__1')	
    dic['title']=info.find('h1').text	
    for i in info1:	
        try:	
            infoi=[]	
            i = i.text.replace('\n','')	
            infoi.append(i)	
            dic['是否支持退改']=infoi[0]	
            dic['使用方式']=infoi[1]	
            dic['活动时长']=infoi[2].split(':')[1]	
            dic['使用期限']=infoi[3]	
            dic['入场方式']=infoi[4]	
        except:	
            continue	
    dic['价格']=info2.find('p',class_='price').find('span').text	
    dic['参加人数']=info2.find('ul',class_='pay_otherinfo t_gray').find('div',class_='left_box').text.replace('\n','').split('人')[0]	
    dic['评分']=info2.find('ul',class_='pay_otherinfo t_gray').find('span',class_='m_star_v2 t12').text.replace('\n','')	
    dic['评价数目']=info2.find('ul',class_='pay_otherinfo t_gray').find('span',class_='t12 u_t_gray_6').text.replace('\n','').replace('(','').split('条')[0]	
    return dic	
info5_list = []	
n=1	
for url in pro5_lst:	
    try:	
        #print(url)	
        info5_list.append(get_data1(url))	
        print('成功获取第%i个网址的基本信息'%n)	
        n+=1	
    except:	
        continue

数据预处理:建立索引,转换数据类型,数据清洗

 
 
#确定索引,转换数据类型,数据清洗	
df5=pd.DataFrame(info5_list)	
df5.index=df5['title']	
df5['评价数目']=df5['评价数目'].astype(str).str.replace(',','')	
df5['评分']=df5['评分'].astype(str).str.replace(',','')	
df5['价格']=df5['价格'].astype(str).str.replace(',','')	
df5['评分']=df5['评分'].astype(np.float)	
df5['评价数目']=df5['评价数目'].astype(np.int)	
df5['价格']=df5['价格'].astype(np.int)	
df5

可视化:做散点图查看价格、评分、评价数目的关系

 
 
plt.title('分类5活动价格评分气泡图')	
plt.scatter(df5['价格'],df5['评分'],s=df5['评价数目']/100,alpha=0.8,cmap='Reds')	
plt.grid()	
#从散点图可以看出评分多集中在4.2-5分,价格集中在200元内,评论多在100元内的商品

640?wx_fmt=png

 
 
plt.title('价格分布图')	
plt.hist(df5['价格'],bins=10)	
plt.grid()	
#可以看出大部分活动价格集中在250元内


640?wx_fmt=png

 
 
#查看价格前十的活动	
dptop10=df5.sort_values(by='价格',ascending=False).iloc[:10]	
dptop10['价格'].plot(kind='bar',figsize=(10,5),color='y',grid=True)	
#可以看出交通高价格主要是札幌包车一日游、富士山箱根等地一日游、成天机场接送、大阪周边包车一日游、富士区一日游、京都市区一日游、京都奈良一日游等包车项目


640?wx_fmt=png

 
 
#查看评分前十的活动	
dptop10=df5.sort_values(by='评分',ascending=False).iloc[:10]	
dptop10['评分'].plot(kind='bar',figsize=(10,5),color='r',grid=True)	
#可看出高评分主要有福冈周边接机、关西包车游览、茨城机场接送、4G随身wifi、4G上网卡、新千岁机场接送、4G隐身wifi、九州自驾租车、普光寺&松代一日乘车券等商品


640?wx_fmt=png

 
 
#查看评价数目前十的活动	
dptop10=df5.sort_values(by='评价数目',ascending=False).iloc[:10]	
dptop10['评价数目'].plot(kind='bar',figsize=(10,5),color='b',grid=True)	
#评价数目可以在一定程度上反映‘交通&wifi’相关商品的热门程度,此处可以看出东京地铁乘车券、成田机场接送、日本随身wifi、欢迎来大阪卡、关西周游券、日本4G上网卡、箱根周游券等商品较多人购买使用。


640?wx_fmt=png

以上便是对‘当地交通&wifi’的分析,从分析结果看建议做交通相关攻略的时候,根据游览地方,选择评分较高的交通方式,如:福冈周边接机、关西包车游览、茨城机场接送、4G随身wifi、4G上网卡、新千岁机场接送、4G隐身wifi、九州自驾租车、普光寺&松代一日乘车券等商品;同时可参考较多人使用的东京地铁乘车券、成田机场接送、日本随身wifi、欢迎来大阪卡、关西周游券、日本4G上网卡、箱根周游券等商品


根据对五个活动类别的分析,以下分别对景点、日游、体验、美食、交通五大方面给出建议:
1、景点&表演:环球影城、海洋馆、迪士尼、静冈樱桃小丸子乐园门票、冲绳东南植物园、东京读卖乐园、东京大森茶屋艺伎宴;
2、一日游&小团游:关西周游券可用于大阪、神户、京都以至奈良、和歌山、高野山的观光旅游,富士山旅游路线建议:忍野八海、御殿场outlet、抹茶体验、河口湖、五合目,富士&箱根:芦之湖、驹岳空中缆车,北海道:旭山动物园、美瑛青池;从评分上看,热门地点有:东京筑地市场、富士山、大阪黑门市场美食、户隐高原、东京SUP立式划桨体验、东京水上皮划艇体验、博多古寺巡礼;
3、特色体验:土豪可以考虑武士杀阵体验,东京观光直升机、滑雪等体验,当然热门的京都东山人力车、青木原树海、濑底岛帆伞&浮潜体验、天妇罗烹饪课&抹茶制作体验、茶道&书法&干果子制作体验、大阪城武士忍者神龟扮演体验、有马温泉体验、池袋动物广场萌宠体验、大阪海洋馆、浅草寺和服体验、大江户温泉、京都和服、新宿机器人餐厅表演、岚山嵯峨野小火车、冲绳美丽海水族馆不容错过;
4、地道美食:土豪可以考虑银座高级和牛牛排、清酒厂、米其林怀石料理、和牛烤肉等美食店;从评分看,祗园怀石料理、乌丸御池店、螃蟹&海鲜居酒屋、和牛牛排西餐、北海道拉面、蟹本家、北一札幌拉面等店是满分店,相信味道应该相当不错;从评论数目看,玄品河豚、烧肉亭六歌仙、札幌啤酒园、武藏自助餐厅、日本酒专门店、蟹家、矶丸水产、玄品河豚等美食店较为热门,性价比较高;
5、交通&wifi:根据游览地方,选择评分较高的交通方式,如:福冈周边接机、关西包车游览、茨城机场接送、4G随身wifi、4G上网卡、新千岁机场接送、4G隐身wifi、九州自驾租车、普光寺&松代一日乘车券等商品;同时可参考较多人使用的东京地铁乘车券、成田机场接送、日本随身wifi、欢迎来大阪卡、关西周游券、日本4G上网卡、箱根周游券等

以上是主要的分析思路和攻略建议


以下是对总数据分析后用活动名做词云图,对攻略意义不大,仅是为了做词云图和用pyecharts做交互式图表查看总体情况。


4、用pyecharts做交互式图表

 
 
#用pe作交互式图表	
import os	
os.chdir(r'C:\Users\Lenovo\Desktop')	
from pyecharts import Line	
line=Line('价格分布折现图',width=1500,height=800)	
line.add('价格',df1['title'],df1['价格'],is_smooth=True,is_datazoom_show=True)	
line.render()	
	
from pyecharts import Bar	
bar=Bar('价格分布柱状图',width=1500,height=800)	
bar.add('价格',df1['title'],df1['价格'],is_smooth=True,is_datazoom_show=True)	
bar.render()

640?wx_fmt=png

5、将点评数作为频次,用活动名做词云图

 
 
#导出文件	
df1.to_excel(r'C:\Users\Lenovo\Desktop\日本KLOOK爬取信息.xlsx')


640?wx_fmt=png

附上wordart网址:https://wordart.com/

  • 7
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值