av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

您的位置:首頁技術(shù)文章
文章詳情頁

Python爬蟲實例——爬取美團美食數(shù)據(jù)

瀏覽:147日期:2022-07-17 13:01:01

1.分析美團美食網(wǎng)頁的url參數(shù)構(gòu)成

1)搜索要點

美團美食,地址:北京,搜索關(guān)鍵詞:火鍋

2)爬取的url

https://bj.meituan.com/s/%E7%81%AB%E9%94%85/

3)說明

url會有自動編碼中文功能。所以火鍋二字指的就是這一串我們不認識的代碼%E7%81%AB%E9%94%85。

通過關(guān)鍵詞城市的url構(gòu)造,解析當前url中的bj=北京,/s/后面跟搜索關(guān)鍵詞。

這樣我們就可以了解到當前url的構(gòu)造。

2.分析頁面數(shù)據(jù)來源(F12開發(fā)者工具)

開啟F12開發(fā)者工具,并且刷新當前頁面:可以看到切換到第二頁時候,我們的url沒有變化,網(wǎng)站也沒有自動進行刷新跳轉(zhuǎn)操作。(web中ajax技術(shù)就是在保證頁面不刷新,url不變化情況下進行數(shù)據(jù)加載的技術(shù))

Python爬蟲實例——爬取美團美食數(shù)據(jù)

此時我們需要在開發(fā)者工具中,找到xhr里面對應(yīng)當前數(shù)據(jù)的響應(yīng)文件。

Python爬蟲實例——爬取美團美食數(shù)據(jù)

分析到這里可以得知:我們的數(shù)據(jù)是以json格式交互。分析第二頁的json文件請求地址與第三頁json文件的請求地址。

第二頁:https://apimobile.meituan.com/group/v4/poi/pcsearch/1?uuid=xxx&userid=-1&limit=32&offset=32&cateId=-1&q=%E7%81%AB%E9%94%85

第三頁:https://apimobile.meituan.com/group/v4/poi/pcsearch/1?uuid=xxx&userid=-1&limit=32&offset=64&cateId=-1&q=%E7%81%AB%E9%94%85

對比發(fā)現(xiàn):offse參數(shù)每次翻頁增加32,并且limit參數(shù)是一次請求的數(shù)據(jù)量,offse是數(shù)據(jù)請求的開始元素,q是搜索關(guān)鍵詞poi/pcsearch/1?其中的1是北京城市的id編號。

3.構(gòu)造請求抓取美團美食數(shù)據(jù)

接下來直接構(gòu)造請求,循環(huán)訪問每一頁的數(shù)據(jù),最終代碼如下。

import requestsimport redef start(): for w in range(0, 1600, 32): #頁碼根據(jù)實際情況x32即可,我這里是設(shè)置50頁為上限,為了避免設(shè)置頁碼過高或者數(shù)據(jù)過少情況,定義最大上限為1600-也就是50頁,使用try-except來檢測時候異常,異常跳過該頁,一般作為無數(shù)據(jù)跳過該頁處理 try: # 注意uuid后面參數(shù)空余將uuid后xxx替換為自己的uuid參數(shù) url = ’https://apimobile.meituan.com/group/v4/poi/pcsearch/1?uuid=xxx&userid=-1&limit=32&offset=’+str(w)+’&cateId=-1&q=%E7%81%AB%E9%94%85’ #headers的數(shù)據(jù)可以在F12開發(fā)者工具下面的requests_headers中查看,需要實現(xiàn)選擇如下headers信息 #必要情況 請求頻繁 建議增加cookie參數(shù)在headers內(nèi) headers = {’Accept’: ’*/*’,’Accept-Encoding’: ’gzip, deflate, br’,’Accept-Language’: ’zh-CN,zh;q=0.9’,’Connection’: ’keep-alive’,’User-Agent’: ’Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3741.400 QQBrowser/10.5.3863.400’,’Host’: ’apimobile.meituan.com’,’Origin’: ’https://bj.meituan.com’,’Referer’: ’https://bj.meituan.com/s/%E7%81%AB%E9%94%85/’ } response = requests.get(url, headers=headers) #正則獲取當前響應(yīng)內(nèi)容中的數(shù)據(jù),因json方法無法針對店鋪特有的title鍵值進行獲取沒所以采用正則 titles = re.findall(’','title':'(.*?)','address':'’, response.text) addresses = re.findall(’,'address':'(.*?)',’, response.text) avgprices = re.findall(’,'avgprice':(.*?),’, response.text) avgscores = re.findall(’,'avgscore':(.*?),’,response.text) comments = re.findall(’,'comments':(.*?),’,response.text) #輸出當前返回數(shù)據(jù)的長度 是否為32 print(len(titles), len(addresses), len(avgprices), len(avgscores), len(comments)) for o in range(len(titles)): #循環(huán)遍歷每一個值 寫入文件中 title = titles[o] address = addresses[o] avgprice = avgprices[o] avgscore = avgscores[o] comment = comments[o] #寫入本地文件 file_data(title, address, avgprice, avgscore, comment)#文件寫入方法def file_data(title, address, avgprice, avgscore, comment): data = {’店鋪名稱’: title,’店鋪地址’: address,’平均消費價格’: avgprice,’店鋪評分’: avgscore,’評價人數(shù)’: comment } with open(’美團美食.txt’, ’a’, encoding=’utf-8’)as fb: fb.write(json.dumps(data, ensure_ascii=False) + ’n’) #ensure_ascii=False必須加因為json.dumps方法不關(guān)閉轉(zhuǎn)碼會導(dǎo)致出現(xiàn)亂碼情況if __name__ == ’__main__’: start()

運行結(jié)果如下:

Python爬蟲實例——爬取美團美食數(shù)據(jù)

本地文件:

Python爬蟲實例——爬取美團美食數(shù)據(jù)

4.總結(jié)

根據(jù)搜索詞變化,城市變化,可以改變url中指定的參數(shù)來實現(xiàn)。同時也要記得變更headers中的指定參數(shù),方法簡單,多加練習(xí)即可熟悉ajax類型的數(shù)據(jù)抓取。

以上就是Python爬蟲實例——爬取美團美食數(shù)據(jù)的詳細內(nèi)容,更多關(guān)于Python爬蟲爬取美食數(shù)據(jù)的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標簽: 美團 Python
相關(guān)文章:
主站蜘蛛池模板: 日本在线一二 | 国产精品入口 | 精品一区二区在线观看 | 爱爱视频在线观看 | 国产视频一区二区 | 一区二区三区在线 | 亚洲视频免费在线观看 | 在线中文字幕视频 | 欧美成人精品一区二区男人看 | 黄频免费 | 蜜桃传媒一区二区 | 国产成人网 | 国产精品99久久久精品免费观看 | 免费久久99精品国产婷婷六月 | 国产日韩欧美在线观看 | 91视频在线观看 | 欧美一级免费看 | 日韩欧美在线一区 | 国产精品日韩在线观看 | 成人午夜黄色 | 狠狠亚洲| 成人a免费| 久久精品国产精品青草 | 亚洲欧美日韩精品久久亚洲区 | 在线成人av | 亚洲精品在线免费看 | 国产精品久久久久久久久久 | 国产精品一区二区不卡 | 一区二区三区免费 | 久久精品国产一区二区三区不卡 | 亚洲在线电影 | 国产在线视频一区二区 | 日韩精品免费在线观看 | 色婷婷影院| 日韩成人在线播放 | 91高清在线视频 | 亚洲免费在线观看 | 玖玖视频国产 | 色欧美片视频在线观看 | 日韩精品一区二区三区中文在线 | 福利片在线观看 |