在當今快節奏的都市生活中,餐飲品牌的門店布局不僅反映了其市場策略,更折射出消費者對便捷、品質和品牌認同的追求。漢堡王(Burger King)作為全球知名的西式快餐品牌之一,在中國市場同樣占據重要地位。自進入中國市場以來,漢堡王憑借其獨特的“火烤”特色以及多樣化的菜單選擇,迅速在全國范圍內擴張,并逐漸形成了與本地市場的深度融合,成為肯德基、麥當勞之外的重要競爭者。不同于德克士的“東方口味西式快餐”定位,漢堡王強調的是其獨有的火烤工藝和經典的美式風味,吸引了大量追求正宗西式快餐體驗的消費者。其門店分布廣泛覆蓋一二線城市,并逐步向三四線城市下沉,展現出強大的市場滲透力和品牌影響力。
本文將深入探討GET請求在獲取漢堡王官方網站的門店分布信息中的實際應用,并展示如何使用Python的requests庫發送GET請求,從漢堡王官方網站提取詳細的門店位置信息,涵蓋全國范圍內的所有漢堡王店鋪。處理響應數據的方法包括解析JSON格式的數據或者HTML頁面,以便有效地提取所需信息。通過多維度的數據分析視角,挖掘漢堡王門店分布中隱含的市場策略與消費趨勢。這項研究不僅能為餐飲行業從業者提供選址決策支持,也可為商業地理學研究提供新的數據支撐,更可為廣大消費者帶來更加便捷的門店查詢體驗。
漢堡王官方網站:餐廳 - BURGER KING? 漢堡王中國官網
我們第一步先找到門店數據的存儲位置,然后看3個關鍵部分標頭、負載、?預覽;
標頭:通常包括URL的連接,也就是目標資源的位置;
負載:對于GET請求:負載通常包含了傳遞的參數,有些網頁負載可能為空,或者沒有負載,因為所有參數都通過URL傳遞,這里我們可以看到它的傳參包括,省份、地級市,是明文傳輸;
預覽:指的是對響應內容的快速查看或摘要顯示,可以幫助用戶快速了解返回的數據結構或內容片段;
接下來就是數據獲取部分,先講一下方法思路,一共三個步驟;
方法思路
- 找到對應數據存儲位置,獲取所有店鋪列表的相關標簽數據;
- 我們通過改變查詢關鍵字(省份、地級市),來遍歷全國門店數據;
- 坐標轉換,通過coord-convert庫實現GCJ-02轉WGS84;
第一步:我們先找到對應數據存儲位置,獲取所有店鋪列表,經過測試,每次查詢一類關鍵詞會返回一個html,我們通過修改關鍵詞來進行數據獲取,為了方便我們直接建立一個包含省份、地級市字典,通過遍歷關鍵詞來查詢全國數據;
第二步:利用GET請求遍歷獲取所有店鋪列表,并根據標簽進行保存,另存為csv;
完整代碼#運行環境 Python 3.11
import requests
import json
import pandas as pd
from datetime import datetime
import math
import time# 省份和城市數據
PROVINCE_CITY_DICT = {"北京市": ["北京市"],"天津市": ["天津市"],"上海市": ["上海市"],"重慶市": ["重慶市"],"河北省": ["石家莊市", "唐山市", "秦皇島市", "邯鄲市", "邢臺市", "保定市", "張家口市", "承德市", "滄州市", "廊坊市","衡水市"],"山西省": ["太原市", "大同市", "陽泉市", "長治市", "晉城市", "朔州市", "晉中市", "運城市", "忻州市", "臨汾市","呂梁市"],"內蒙古自治區": ["呼和浩特市", "包頭市", "烏海市", "赤峰市", "通遼市", "鄂爾多斯市", "呼倫貝爾市", "巴彥淖爾市","烏蘭察布市"],"遼寧省": ["沈陽市", "大連市", "鞍山市", "撫順市", "本溪市", "丹東市", "錦州市", "營口市", "阜新市", "遼陽市","盤錦市", "鐵嶺市", "朝陽市", "葫蘆島市"],"吉林省": ["長春市", "吉林市", "四平市", "遼源市", "通化市", "白山市", "松原市", "白城市"],"黑龍江省": ["哈爾濱市", "齊齊哈爾市", "雞西市", "鶴崗市", "雙鴨山市", "大慶市", "伊春市", "佳木斯市", "七臺河市","牡丹江市", "黑河市", "綏化市"],"江蘇省": ["南京市", "無錫市", "徐州市", "常州市", "蘇州市", "南通市", "連云港市", "淮安市", "鹽城市", "揚州市","鎮江市", "泰州市", "宿遷市"],"浙江省": ["杭州市", "寧波市", "溫州市", "嘉興市", "湖州市", "紹興市", "金華市", "衢州市", "舟山市", "臺州市","麗水市"],"安徽省": ["合肥市", "蕪湖市", "蚌埠市", "淮南市", "馬鞍山市", "淮北市", "銅陵市", "安慶市", "黃山市", "滁州市","阜陽市", "宿州市", "六安市", "亳州市", "池州市", "宣城市"],"福建省": ["福州市", "廈門市", "莆田市", "三明市", "泉州市", "漳州市", "南平市", "龍巖市", "寧德市"],"江西省": ["南昌市", "景德鎮市", "萍鄉市", "九江市", "新余市", "鷹潭市", "贛州市", "吉安市", "宜春市", "撫州市","上饒市"],"山東省": ["濟南市", "青島市", "淄博市", "棗莊市", "東營市", "煙臺市", "濰坊市", "濟寧市", "泰安市", "威海市","日照市", "臨沂市", "德州市", "聊城市", "濱州市", "菏澤市"],"河南省": ["鄭州市", "開封市", "洛陽市", "平頂山市", "安陽市", "鶴壁市", "新鄉市", "焦作市", "濮陽市", "許昌市","漯河市", "三門峽市", "南陽市", "商丘市", "信陽市", "周口市", "駐馬店市"],"湖北省": ["武漢市", "黃石市", "十堰市", "宜昌市", "襄陽市", "鄂州市", "荊門市", "孝感市", "荊州市", "黃岡市","咸寧市", "隨州市"],"湖南省": ["長沙市", "株洲市", "湘潭市", "衡陽市", "邵陽市", "岳陽市", "常德市", "張家界市", "益陽市", "郴州市","永州市", "懷化市", "婁底市"],"廣東省": ["廣州市", "韶關市", "深圳市", "珠海市", "汕頭市", "佛山市", "江門市", "湛江市", "茂名市", "肇慶市","惠州市", "梅州市", "汕尾市", "河源市", "陽江市", "清遠市", "東莞市", "中山市", "潮州市", "揭陽市","云浮市"],"廣西壯族自治區": ["南寧市", "柳州市", "桂林市", "梧州市", "北海市", "防城港市", "欽州市", "貴港市", "玉林市","百色市", "賀州市", "河池市", "來賓市", "崇左市"],"海南省": ["海口市", "三亞市", "三沙市", "儋州市"],"四川省": ["成都市", "自貢市", "攀枝花市", "瀘州市", "德陽市", "綿陽市", "廣元市", "遂寧市", "內江市", "樂山市","南充市", "眉山市", "宜賓市", "廣安市", "達州市", "雅安市", "巴中市", "資陽市"],"貴州省": ["貴陽市", "六盤水市", "遵義市", "安順市", "畢節市", "銅仁市"],"云南省": ["昆明市", "曲靖市", "玉溪市", "保山市", "昭通市", "麗江市", "普洱市", "臨滄市"],"西藏自治區": ["拉薩市", "日喀則市", "昌都市", "林芝市", "山南市", "那曲市"],"陜西省": ["西安市", "銅川市", "寶雞市", "咸陽市", "渭南市", "延安市", "漢中市", "榆林市", "安康市", "商洛市"],"甘肅省": ["蘭州市", "嘉峪關市", "金昌市", "白銀市", "天水市", "武威市", "張掖市", "平涼市", "酒泉市", "慶陽市","定西市", "隴南市"],"青海省": ["西寧市", "海東市"],"寧夏回族自治區": ["銀川市", "石嘴山市", "吳忠市", "固原市", "中衛市"],"新疆維吾爾自治區": ["烏魯木齊市", "克拉瑪依市"]
}def fetch_bk_stores_by_city(province, city):"""獲取指定省份城市的漢堡王店鋪信息"""try:store_list = []first_page = Truecurrent_page = 1total_pages = 1while current_page <= total_pages:# 請求URL和參數url = "https://www.bkchina.cn/restaurant/getMapsListAjax"params = {'page': current_page,'storeProvince': province,'storeCity': city,'localSelect': '','search': ''}# 設置請求頭headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',}# 發送GET請求response = requests.get(url, params=params, headers=headers)response.raise_for_status()# 解析JSON響應data = response.json()# 檢查響應狀態if data.get('status') != 0 or 'data' not in data:print(f"獲取 {province} {city} 數據失敗: {data.get('info', '未知錯誤')}")return None# 提取店鋪列表stores = data['data']['data']# 如果是第一頁,計算總頁數if first_page:total_stores = int(data['data']['total'])if total_stores == 0:print(f"{province} {city} 沒有店鋪數據")return Nonetotal_pages = math.ceil(total_stores / 5)print(f"{province} {city} 總店鋪數: {total_stores}")first_page = False# 處理每個店鋪的數據for store in stores:store_info = {'storeName': store.get('storeName', ''),'storeAddress': store.get('storeAddress', ''),'storeBusinessHours': store.get('storeBusinessHours', ''),'storePhone': store.get('storePhone', ''),'storeProvince': store.get('storeProvince', ''),'storeCity': store.get('storeCity', ''),'storeArea': store.get('storeArea', ''),'storeAreaCn': store.get('storeAreaCn', ''),'storeLatitude': store.get('storeLatitude', ''),'storeLongitude': store.get('storeLongitude', ''),'storeId': store.get('storeId', ''),'storeNo': store.get('storeNo', ''),'storeBrandManage': store.get('storeBrandManage', ''),'storeContactName': store.get('storeContactName', ''),'storeContactPhone': store.get('storeContactPhone', ''),'storeAddtime': store.get('storeAddtime', ''),'hasBreakfast': store.get('hasBreakfast', ''),'useCard': store.get('useCard', '')}store_list.append(store_info)current_page += 1if current_page <= total_pages:time.sleep(1)return store_listexcept Exception as e:print(f"獲取 {province} {city} 數據時出錯: {str(e)}")return Nonedef fetch_all_stores():"""獲取所有省份城市的漢堡王店鋪信息"""all_stores = []for province, cities in PROVINCE_CITY_DICT.items():print(f"\n開始獲取 {province} 的數據...")for city in cities:print(f"\n正在獲取 {province} {city} 的數據...")stores = fetch_bk_stores_by_city(province, city)if stores:all_stores.extend(stores)print(f"{province} {city} 數據獲取成功,獲取到 {len(stores)} 家店鋪")time.sleep(2) # 在獲取不同城市數據之間添加延時if all_stores:# 創建DataFramedf = pd.DataFrame(all_stores)# 生成輸出文件名(包含時間戳)timestamp = datetime.now().strftime('%Y%m%d_%H%M%S')output_file = f'bk_stores_all_{timestamp}.csv'# 保存為CSV文件df.to_csv(output_file, index=False, encoding='utf-8-sig')print(f"\n所有數據獲取完成!")print(f"總共獲取到 {len(all_stores)} 家店鋪信息")print(f"數據已保存到:{output_file}")return dfreturn Noneif __name__ == "__main__":fetch_all_stores()
這里我們建立一個包含省份、地級市的字典,并遍歷查詢每組關鍵詞下的漢堡王店鋪,獲取數據標簽如下,? storeName(店鋪名稱)、storeAddress(店鋪地址)、storeBusinessHours(營業時間)、storePhone(店鋪電話)、storeProvince(所在省份)、storeCity(所在城市)、storeLatitude(緯度)、storeLongitude(經度)、storeAddtime(開業時間)、hasBreakfast(是否供應早餐(0-否,1-是))useCard(是否可用會員卡(0-否,1-是)),其他一些非關鍵標簽,這里省略;
第三步:坐標系轉換,由于漢堡王門店使用的是百度坐標系(GCJ-02),為了在ArcGIS上準確展示而不發生偏移,我們需要將門店的坐標從GCJ-02轉換為WGS-84坐標系。我們可以利用coord-convert庫中的gcj2wgswgs(lng, lat)函數,也可以用免費這個網站:批量轉換工具:地圖坐標系批量轉換 - 免費在線工具 (latlongconverter.online);
對CSV文件中的門店坐標列進行轉換。完成坐標轉換后,再將數據導入ArcGIS進行可視化;
接下來,我們進行看圖說話:
首先,在一線城市如北京、上海、廣州和深圳,漢堡王通過高度集中的布局來吸引那些追求品質生活、愿意為高質量快餐支付溢價的城市居民。這些地區的消費者通常具有較高的消費能力和對國際品牌的認可度,非常適合漢堡王展示其品牌形象和推廣高端產品線。此外,這些城市的快節奏生活方式也與漢堡王快捷方便的服務理念相契合。
其次,在二線城市如南京、杭州、成都、武漢等地,漢堡王同樣展現了廣泛的覆蓋。這些城市雖然經濟發展水平略低于一線城市,但擁有活躍的商業環境和龐大的年輕人口基數,這為漢堡王提供了廣闊的市場空間。在這里,漢堡王可以通過調整菜單價格和推出本地化口味的產品來吸引更多消費者,進一步鞏固其市場份額。
值得注意的是,漢堡王正在逐步向三四線城市下沉,比如徐州、臨沂、洛陽等城市。這一戰略轉變反映了品牌對于中國廣闊內陸市場潛力的認識。在這些城市,盡管消費者的購買力可能不如一二線城市,但他們對于新鮮事物的好奇心和對西方快餐文化的向往使得漢堡王有機會開拓新的客群。
從地理分布上看,東部沿海地區和部分中部地區成為漢堡王重點布局的區域,這是因為這些地方經濟活力強、人口密集,符合漢堡王針對都市白領和年輕家庭的品牌定位。而在西部地區,盡管門店數量相對較少,但隨著當地經濟的發展和消費者口味的變化,漢堡王也在逐步增加門店,以期捕捉到新興市場的增長機會。
文章僅用于分享個人學習成果與個人存檔之用,分享知識,如有侵權,請聯系作者進行刪除。所有信息均基于作者的個人理解和經驗,不代表任何官方立場或權威解讀。