大周末的,不犒勞一下自己,怎么對得起一周的辛勤作業呢,對吧, 那么跟我一起來爬一下你所在的城市美食吧? 基本開發環境
- Python 3.6
- Pycharm
# 爬蟲模塊使用 import requests import re import csv # 資料分析模塊 import pandas as pd import numpy as np from pyecharts.charts import * from pyecharts import options as opts from pyecharts.globals import ThemeType #引入主題
安裝Python并添加到環境變數,pip安裝需要的相關模塊即可,
兄弟們學習python,有時候不知道怎么學,從哪里開始學,掌握了基本的一些語法或者做了兩個案例后,不知道下一步怎么走,不知道如何去學習更加高深的知識,那么對于這些大兄弟們,我準備了大量的免費視頻教程,PDF電子書籍,以及視頻源的源代碼!
還會有大佬解答!
都在這個群里了 點擊藍色字體(我)獲取
歡迎加入,一起討論 一起學習! 需求資料來源分析
某團上面這些資料都是可以獲取的,當然還有商家的電話也是可以的,
一般去找資料的話都是從開發者工具里面進行抓包分析,復制想要的資料內容然后進行搜索,
如果是這樣找資料的話,是沒有什么問題的,但是對于美團這個網站來說,這樣沒有辦法進行多頁資料爬取,
某團的資料要從第二頁找,這樣才能進行多頁資料爬取,
代碼實作
for page in range(0, 1537, 32): # time.sleep(2) url = 'https://apimobile.meituan.com/group/v4/poi/pcsearch/30' data = { 'uuid': '96d0bfc90dfc441b81fb.1630669508.1.0.0', 'userid': '266252179', 'limit': '32', 'offset': page, 'cateId': '-1', 'q': '烤肉', 'token': '你自己的token', } headers = { 'Referer': 'https://sz.meituan.com/', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36' } response = requests.get(url=url, params=data, headers=headers) result = response.json()['data']['searchResult'] for index in result: shop_id = index['id'] index_url = f'https://www.meituan.com/meishi/{shop_id}/' dit = { '店鋪名稱': index['title'], '人均消費': index['avgprice'], '店鋪評分': index['avgscore'], '評論人數': index['comments'], '所在商圈': index['areaname'], '店鋪型別': index['backCateName'], '詳情頁': index_url, } csv_writer.writerow(dit) print(dit) f = open('美團烤肉資料.csv', mode='a', encoding='utf-8', newline='') csv_writer = csv.DictWriter(f, fieldnames=[ '店鋪名稱', '人均消費', '店鋪評分', '評論人數', '所在商圈', '店鋪型別', '詳情頁', ]) csv_writer.writeheader()
爬取資料展示
資料分析代碼實作及效果
import matplotlib.pyplot as plt import seaborn as sns %matplotlib inline plt.rcParams['font.sans-serif'] = ['SimHei'] # 設定加載的字體名 plt.rcParams['axes.unicode_minus'] = False # 解決保存影像是負號'-'顯示為方塊的問題 fig,axes=plt.subplots(2,1,figsize=(12,12)) sns.regplot(x='人均消費',y='店鋪評分',data=https://www.cnblogs.com/hahaa/p/df,color='r',marker='+',ax=axes[0]) sns.regplot(x='評論人數',y='店鋪評分',data=https://www.cnblogs.com/hahaa/p/df,color='g',marker='*',ax=axes[1])
所在商圈烤肉店鋪數量top10
df2 = df.groupby('所在商圈')['店鋪名稱'].count() df2 = df2.sort_values(ascending=True)[-10:] df2 = df2.round(2) c = ( Bar(init_opts=opts.InitOpts(theme=ThemeType.WONDERLAND)) .add_xaxis(df2.index.to_list()) .add_yaxis("",df2.to_list()).reversal_axis() #X軸與y軸調換順序 .set_global_opts(title_opts=opts.TitleOpts(title="商圈烤肉店數量top10",subtitle="資料來源:美團",pos_left = 'center'), xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(font_size=16)), #更改橫坐標字體大小 yaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(font_size=16)), #更改縱坐標字體大小 ) .set_series_opts(label_opts=opts.LabelOpts(font_size=16,position='right')) ) c.render_notebook()
商圈烤肉店鋪評分top10
df4 = df.groupby('評分型別')['店鋪名稱'].count() df4 = df4.sort_values(ascending=False) regions = df4.index.to_list() values = df4.to_list() c = ( Pie(init_opts=opts.InitOpts(theme=ThemeType.WONDERLAND)) .add("", zip(regions,values)) .set_global_opts(title_opts=opts.TitleOpts(title="不同評分型別店鋪數量",subtitle="資料來源:美團",pos_top="-1%",pos_left = 'center')) .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}:{d}%",font_size=18)) ) c.render_notebook()
不同評分型別店鋪數量
df4 = df.groupby('評分型別')['店鋪名稱'].count() df4 = df4.sort_values(ascending=False) regions = df4.index.to_list() values = df4.to_list() c = ( Pie(init_opts=opts.InitOpts(theme=ThemeType.WONDERLAND)) .add("", zip(regions,values)) .set_global_opts(title_opts=opts.TitleOpts(title="不同評分型別店鋪數量",subtitle="資料來源:美團",pos_top="-1%",pos_left = 'center')) .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}:{d}%",font_size=18)) ) c.render_notebook()
不同店鋪型別店鋪數量
df6 = df.groupby('店鋪型別')['店鋪名稱'].count() df6 = df6.sort_values(ascending=False)[:10] df6 = df6.round(2) regions = df6.index.to_list() values = df6.to_list() c = ( Pie(init_opts=opts.InitOpts(theme=ThemeType.WONDERLAND)) .add("", zip(regions,values),radius=["40%", "75%"]) .set_global_opts(title_opts=opts.TitleOpts(title="不同店鋪型別店鋪數量",pos_top="-1%",pos_left = 'center')) .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}",font_size=18)) ) c.render_notebook()
不同店鋪型別店鋪評分
df6 = df.groupby('店鋪型別')['店鋪評分'].mean() df6 = df6.sort_values(ascending=True) df6 = df6.round(2) df6 = df6.tail(10) c = ( Bar(init_opts=opts.InitOpts(theme=ThemeType.WONDERLAND)) .add_xaxis(df6.index.to_list()) .add_yaxis("",df6.to_list()).reversal_axis() #X軸與y軸調換順序 .set_global_opts(title_opts=opts.TitleOpts(title="不同店鋪型別評分",subtitle="資料來源:美團",pos_left = 'center'), xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(font_size=16)), #更改橫坐標字體大小 yaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(font_size=16)), #更改縱坐標字體大小 ) .set_series_opts(label_opts=opts.LabelOpts(font_size=16,position='right')) ) c.render_notebook()
不同店鋪型別店鋪評論人數?
df7 = df.groupby('店鋪型別')['評論人數'].sum() df7 = df7.sort_values(ascending=True) df7 = df7.tail(10) c = ( Bar(init_opts=opts.InitOpts(theme=ThemeType.WONDERLAND)) .add_xaxis(df7.index.to_list()) .add_yaxis("",df7.to_list()).reversal_axis() #X軸與y軸調換順序 .set_global_opts(title_opts=opts.TitleOpts(title="不同店鋪型別評論人數",subtitle="資料來源:美團",pos_left = 'center'), xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(font_size=16)), #更改橫坐標字體大小 yaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(font_size=16)), #更改縱坐標字體大小 ) .set_series_opts(label_opts=opts.LabelOpts(font_size=16,position='right')) ) c.render_notebook()

把?地方改成你們相對應的地點,找到自己喜歡吃的地方,快帶約上自己的女朋友、小伙伴一起去打卡吧~
如果覺得有幫助,記得點贊收藏轉發哈~? 小編的動力來自于你們的喜歡
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/333242.html
標籤:Python
