程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

python采集一下美團外賣數據~~

編輯:Python

所需知識點(https://jq.qq.com/?_wv=1027&k=Ap5XvyNN)

1、動態數據抓包演示
2、json數據解析
3、requests模塊的使用
4、保存csv

安裝命令:requests >>> pip install requests

模塊安裝問題:

如果安裝python第三方模塊:

  1. win + R 輸入 cmd 點擊確定, 輸入安裝命令 pip install 模塊名 (pip install requests) 回車
  2. 在pycharm中點擊Terminal(終端) 輸入安裝命令

如何配置pycharm裡面的python解釋器?

  1. 選擇file(文件) >>> setting(設置) >>> Project(項目) >>> python interpreter(python解釋器)
  2. 點擊齒輪, 選擇add
  3. 添加python安裝路徑

pycharm如何安裝插件?

  1. 選擇file(文件) >>> setting(設置) >>> Plugins(插件)
  2. 點擊 Marketplace 輸入想要安裝的插件名字 比如:翻譯插件 輸入 translation / 漢化插件 輸入 Chinese
  3. 選擇相應的插件點擊 install(安裝) 即可
  4. 安裝成功之後 是會彈出 重啟pycharm的選項 點擊確定, 重啟即可生效

案例實現思路流程: 可見即可爬…

一. 數據來源分析 (https://jq.qq.com/?_wv=1027&k=Ap5XvyNN)

通過開發者工具進行抓包分析, 分析自己想要數據內容 可以從哪裡獲取

分析數據 從第二頁開始

打開開發者工具
點擊第二頁內容
點擊搜索按鈕, 進行搜索內容
查看服務器返回響應數據內容

二. 代碼實現步驟: 發送請求 >>> 獲取數據 >>> 解析數據 >>> 保存數據

用代碼去模擬浏覽器發送請求獲取數據

  1. 發送請求, 對於剛剛分析得到url地址發送請求
  2. 獲取數據, 獲取服務器返回數據
  3. 解析數據, 提取我們想要數據內容 店鋪基本信息
  4. 保存數據, 把數據表格裡面

代碼 (可掃文末二維碼領取)

1.導入模塊

import requests # 數據請求模塊
import pprint # 格式化輸出模塊
import csv # 內置模塊
import time
import re
def get_shop_info(html_url):
# url = 'https://www.meituan.com/xiuxianyule/193306807/'
headers = {
'Cookie': '_lxsdk_cuid=17e102d3914c8-000093bbbb0ed8-4303066-1fa400-17e102d3914c8; __mta=48537241.1640948906361.1640948906361.1640948906361.1; _hc.v=e83bebb5-d6ee-d90e-dd4b-4f2124f8f982.1640951715; ci=70; rvct=70; mt_c_token=2Tmbj8_Qihel3QR9oEXS4nEpnncAAAAABBEAAB9N2m2JXSE0N6xtRrgG6ikfQZQ3NBdwyQdV9vglW8XGMaIt38Lnu1_89Kzd0vMKEQ; iuuid=3C2110909379198F1809F560B5E33A58B83485173D8286ECD2C7F8AFFCC724B4; isid=2Tmbj8_Qihel3QR9oEXS4nEpnncAAAAABBEAAB9N2m2JXSE0N6xtRrgG6ikfQZQ3NBdwyQdV9vglW8XGMaIt38Lnu1_89Kzd0vMKEQ; logintype=normal; cityname=%E9%95%BF%E6%B2%99; _lxsdk=3C2110909379198F1809F560B5E33A58B83485173D8286ECD2C7F8AFFCC724B4; _lx_utm=utm_source%3DBaidu%26utm_medium%3Dorganic; latlng=28.302546%2C112.868692; ci3=70; uuid=f7c4d3664ab34f13ad7f.1650110501.1.0.0; mtcdn=K; lt=9WbeLmhHHLhTVpnVu264fUCMYeIAAAAAQREAAKnrFL00wW5eC7mPjhHwIZwkUL11aa7lM7wOfgoO53f0uJpjKSRpO6LwCBDd9Fm-wA; u=266252179; n=qSP946594369; token2=9WbeLmhHHLhTVpnVu264fUCMYeIAAAAAQREAAKnrFL00wW5eC7mPjhHwIZwkUL11aa7lM7wOfgoO53f0uJpjKSRpO6LwCBDd9Fm-wA; unc=qSP946594369; firstTime=1650118043342; _lxsdk_s=18032a80c4c-4d4-d30-e8f%7C%7C129',
'Referer': 'https://chs.meituan.com/',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.88 Safari/537.36'
}
response = requests.get(url=html_url, headers=headers)
# print(response.text)
phone = re.findall('"phone":"(.*?)"', response.text)[0]
# \n 不是換行符, \n符號而已 \轉義字符給轉移掉
openTime = re.findall('"openTime":"(.*?)"', response.text)[0].replace('\\n', '')
address = re.findall('"address":"(.*?)"', response.text)[0]
shop_info = [phone, openTime, address]
return shop_info # 保存文件 創建文件夾 encoding='utf-8' 指定編碼 如果說我用utf-8 還亂碼怎麼辦
# w 會覆蓋, a不會覆蓋
f = open('究極無敵男人秘密最終版.csv', mode='a', encoding='utf-8', newline='')
csv_writer = csv.DictWriter(f, fieldnames=[
'店名',
'人均消費',
'最低消費',
'商圈',
'店鋪類型',
'評分',
'電話',
'營業時間',
'地址',
'緯度',
'經度',
'詳情頁',
])
csv_writer.writeheader() # 寫入表頭 # html_url = 'https://apimobile.meituan.com/group/v4/poi/pcsearch/70?uuid=f7c4d3664ab34f13ad7f.1650110501.1.0.0&userid=266252179&limit=32&offset=64&cateId=-1&q=%E4%BC%9A%E6%89%80&token=9WbeLmhHHLhTVpnVu264fUCMYeIAAAAAQREAAKnrFL00wW5eC7mPjhHwIZwkUL11aa7lM7wOfgoO53f0uJpjKSRpO6LwCBDd9Fm-wA'

1. 發送請求, 對於剛剛分析得到url地址發送請求 翻頁去分析請求url地址的變化規律

for page in range(0, 321, 32): # 從0 32 64 96 128 160 192 .... 320
time.sleep(1.5) # 延時等待 1.5S
url = 'https://apimobile.meituan.com/group/v4/poi/pcsearch/70'
# pycharm功能 快速批量替換, ctrl + R 選擇需要替換目標, 運用正則表達式進行批量替換
data = {
'uuid': 'f7c4d3664ab34f13ad7f.1650110501.1.0.0',
'userid': '266252179',
'limit': '32',
'offset': page,
'cateId': '-1',
'q': '會所',
'token': '9WbeLmhHHLhTVpnVu264fUCMYeIAAAAAQREAAKnrFL00wW5eC7mPjhHwIZwkUL11aa7lM7wOfgoO53f0uJpjKSRpO6LwCBDd9Fm-wA',
}
# headers 偽裝 python代碼的 外套
# User-Agent 用戶代理 浏覽器基本的身份信息.... 最簡單反反爬的手段 為了防止被識別是爬蟲程序
# Referer 防盜鏈 告訴服務器我們請求url地址是從哪裡跳轉過來
headers = {
'Referer': 'https://chs.meituan.com/',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.88 Safari/537.36'
}
response = requests.get(url=url, params=data, headers=headers)
# print(response) # <Response [403]> 狀態碼 表示沒有訪問權限 防盜鏈 200 請求成功


2. 獲取數據 response.text 獲取文本數據字符串數據類型 response.json() 字典數據類型

 # print(response.json())
# pprint.pprint(response.json()) # 老師版本是 python 3.8
  1. 解析數據 字典取值, 根據鍵值對取值 根據冒號左邊的內容(鍵) 提取冒號右邊的內容(值)
 searchResult = response.json()['data']['searchResult']
for index in searchResult: # 把列表裡面數據 一個一個提取出來
# pprint.pprint(index)
href = f'https://www.meituan.com/xiuxianyule/{index["id"]}/'
shop_info = get_shop_info(href)
title = index['title'] # 店名
price = index['avgprice'] # 人均消費
lost_price = index['lowestprice'] # 最低消費
area = index['areaname'] # 商圈
shop_type = index['backCateName'] # 店鋪類型
score = index['avgscore'] # 評分
latitude = index['latitude'] # 緯度
longitude = index['longitude'] # 經度 ctrl + D 快速復制
# tab 集體縮進
# shift + tab 取消縮進
dit = {
'店名': title,
'人均消費': price,
'最低消費': lost_price,
'商圈': area,
'店鋪類型': shop_type,
'評分': score,
'電話': shop_info[0],
'營業時間': shop_info[1],
'地址': shop_info[2],
'緯度': latitude,
'經度': longitude,
'詳情頁': href,
}

4. 保存數據

 csv_writer.writerow(dit)
print(dit)

尾語

好了,我的這篇文章寫到這裡就結束啦!

有更多建議或問題可以評論區或私信我哦!一起加油努力叭(ง •_•)ง

喜歡就關注一下博主,或點贊收藏評論一下我的文章叭!!!

python采集一下美團外賣數據~~的更多相關文章

  1. python采集websocket實時數據

    之前大部分的數據采集基本都是http的,也一直對如何采集websocket的實時數據有疑問,不知道入從哪裡入手,一籌莫展,今天在知乎上看到了一篇采集websocket的文章,講的很透徹 終於把這個疑問 ...

  2. [轉發]Android視頻技術探索之旅:美團外賣商家端的實踐

    美團技術團隊 2019-09-12 20:02:11 背景 2013年美團外賣成立,至今一直迅猛發展.隨著外賣業務量級與日俱增,單一的文字和圖片已無法滿足商家的需求,商家迫切需要更豐富的商品描述手段吸 ...

  3. python爬取“美團美食”汕頭地區的所有店鋪信息

    一.目的 獲取美團美食每個店鋪所有的評論信息,並保存到數據庫和本地 二.實現步驟 獲取所有店鋪的poiId 首先觀察詳情頁的url,後面是跟著一串數字的,而這一串數字代表著每個店鋪特有的id號,我們稱 ...

  4. 美團外賣app可行性分析

    美團外賣app可行性分析 1 引言 1.1編寫目的 年輕人追求時尚,快捷,因此外賣行業擁有廣闊的消費群體:團購的興起,也促進了人們的消費欲望,人們繼續一個外賣平台,來滿足他們的欲望.O2o模式的日漸完 ...

  5. 美團外賣iOS App冷啟動治理

    一.背景 冷啟動時長是App性能的重要指標,作為用戶體驗的第一道“門”,直接決定著用戶對App的第一印象.美團外賣iOS客戶端從2013年11月開始,歷經幾十個版本的迭代開發,產品形態不斷完善,業務功 ...

  6. 美團外賣Android平台化的復用實踐

    美團外賣平台化復用主要是指多端代碼復用,正如美團外賣iOS多端復用的推動.支撐與思考文章所述,多端包含有兩層意思:其一是相同業務的多入口,指美團外賣業務需要在美團外賣App(下文簡稱外賣App)和美團 ...

  7. WMRouter:美團外賣Android開源路由框架

    WMRouter是一款Android路由框架,基於組件化的設計思路,功能靈活,使用也比較簡單. WMRouter最初用於解決美團外賣C端App在業務演進過程中的實際問題,之後逐步推廣到了美團其他App ...

  8. 美團外賣Android Crash治理之路

    Crash率是衡量一個App好壞的重要指標之一,如果你忽略了它的存在,它就會愈演愈烈,最後造成大量用戶的流失,進而給公司帶來無法估量的損失.本文講述美團外賣Android客戶端團隊在將App的Cras ...

  9. 移動開發:美團外賣Android Lint代碼檢查實踐

    概述 Lint是Google提供的Android靜態代碼檢查工具,可以掃描並發現代碼中潛在的問題,提醒開發人員及早修正,提高代碼質量.除了Android原生提供的幾百個Lint規則,還可以開發自定義L ...

  10. 使用Python將Excel中的數據導入到MySQL

    使用Python將Excel中的數據導入到MySQL 工具 Python 2.7 xlrd MySQLdb 安裝 Python 對於不同的系統安裝方式不同,Windows平台有exe安裝包,Ubunt ...

隨機推薦

  1. 詳解Javascript的繼承實現

    我最早掌握的在js中實現繼承的方法是在w3school學到的混合原型鏈和對象冒充的方法,在工作中,只要用到繼承的時候,我都是用這個方法實現.它的實現簡單,思路清晰:用對象冒充繼承父類構造函數的屬性,用 ...

  2. xinetd

    最簡安裝centos6.4時,xinetd服務是沒有安裝的,只是在/etc下有xinetd.d目錄, 沒有xinetd.conf這個配置文件 xinetd is a secure replacemen ...

  3. C# MailMessage Attachment 中文名附件發郵件-Firefox中文顯示正常,網頁打開郵件附件中文名亂碼

    一.故事 首先通過CDO.Message來獲取郵件EML相關數據:郵件標題.郵件內容.郵件附件.發件人.收件人.CC主要就這麼幾個,其次通過MailMessage來組織郵件通過Python來發送郵件! ...

  4. h.264參考圖像列表、解碼圖像緩存

    1.參考圖像列表(reference picture list) 一般來說,h.264會把需要編碼的圖像分為三種類型:I.P.B,其中的B.P類型的圖像由於采用了幀間編碼的這種編碼方式,而幀間編碼又是 ...

  5. java synchronized內置鎖的可重入性和分析總結

    最近在讀<<Java並發編程實踐>>,在第二章中線程安全中降到線程鎖的重進入(Reentrancy) 當一個線程請求其它的線程已經占有的鎖時,請求線程將被阻塞.然而內部鎖是可重 ...

  6. php表單修改數據

    (接前面寫的) 第一個頁面xiugai.php <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" ...

  7. 去除測序reads中的接頭:adaptor

    之前用c寫過一個程序,查找reads中是否包含了adaptor,如果檢測到的話就過濾掉含有adaptor的reads,這次在過濾完數據之後發現接頭序列比較多,為了提升組裝效果,又不能很大地影響數據量, ...

  8. zz:linux下rz,sz的安裝方法

    zz:http://xukaizijian.blog.163.com/blog/static/1704331192011611104631875/ wget http://ohse.de/uwe/re ...

  9. java中的強大的枚舉(基本沒人用)

    枚舉的概念和多例設計模式相似,多例設計模式詳見:多例設計模式代碼模型 范例:簡單枚舉類 通過emu關鍵字定義一個枚舉 package com.java.demo; enum Color{ RED,BL ...

  10. iOS AppsFlyer的使用注意事項

    AppFlyer 是近期比較火的一款廣告追蹤統計工具,當然統計的功能友盟也能夠實現,而appsflyer更是具有定向投放,是app跳轉到對應的頁面. 詳細的:當點擊廣告的時候,假設沒有安裝應用.則會跳 ...


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved