最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2020年07月15日 17:03:34   作者:吃著東西不想停  
這篇文章主要介紹了Python爬蟲如何爬取美團(tuán)美食數(shù)據(jù),文中講解非常詳細(xì),代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下

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

1)搜索要點(diǎn)

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

2)爬取的url

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

3)說(shuō)明

url會(huì)有自動(dòng)編碼中文功能。所以火鍋二字指的就是這一串我們不認(rèn)識(shí)的代碼%E7%81%AB%E9%94%85。

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

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

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

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

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

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

第二頁(yè):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

第三頁(yè):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

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

3.構(gòu)造請(qǐng)求抓取美團(tuán)美食數(shù)據(jù)

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

import requests
import re


def start():
  for w in range(0, 1600, 32):
  #頁(yè)碼根據(jù)實(shí)際情況x32即可,我這里是設(shè)置50頁(yè)為上限,為了避免設(shè)置頁(yè)碼過(guò)高或者數(shù)據(jù)過(guò)少情況,定義最大上限為1600-也就是50頁(yè),使用try-except來(lái)檢測(cè)時(shí)候異常,異常跳過(guò)該頁(yè),一般作為無(wú)數(shù)據(jù)跳過(guò)該頁(yè)處理
    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中查看,需要實(shí)現(xiàn)選擇如下headers信息
      #必要情況 請(qǐng)求頻繁 建議增加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)
      #正則獲取當(dāng)前響應(yīng)內(nèi)容中的數(shù)據(jù),因json方法無(wú)法針對(duì)店鋪特有的title鍵值進(jìn)行獲取沒(méi)所以采用正則
   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)
     #輸出當(dāng)前返回?cái)?shù)據(jù)的長(zhǎng)度 是否為32
     print(len(titles), len(addresses), len(avgprices), len(avgscores), len(comments))
     for o in range(len(titles)):
     #循環(huán)遍歷每一個(gè)值 寫入文件中
       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,
        '平均消費(fèi)價(jià)格': avgprice,
        '店鋪評(píng)分': avgscore,
        '評(píng)價(jià)人數(shù)': comment
      }
  with open('美團(tuán)美食.txt', 'a', encoding='utf-8')as fb:
    fb.write(json.dumps(data, ensure_ascii=False) + '\n')
    #ensure_ascii=False必須加因?yàn)閖son.dumps方法不關(guān)閉轉(zhuǎn)碼會(huì)導(dǎo)致出現(xiàn)亂碼情況
if __name__ == '__main__':
  start()

運(yùn)行結(jié)果如下:

本地文件:

4.總結(jié)

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

以上就是Python爬蟲實(shí)例——爬取美團(tuán)美食數(shù)據(jù)的詳細(xì)內(nèi)容,更多關(guān)于Python爬蟲爬取美食數(shù)據(jù)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python正則表達(dá)式指南 推薦

    Python正則表達(dá)式指南 推薦

    本文介紹了Python對(duì)于正則表達(dá)式的支持,包括正則表達(dá)式基礎(chǔ)以及Python正則表達(dá)式標(biāo)準(zhǔn)庫(kù)的完整介紹及使用示例。本文的內(nèi)容不包括如何編寫高效的正則表達(dá)式、如何優(yōu)化正則表達(dá)式,這些主題請(qǐng)查看其他教程。
    2018-10-10
  • 高考考python編程是真的嗎

    高考考python編程是真的嗎

    在本篇文章里小編給大家整理的是一篇關(guān)于高考考python編程的相關(guān)信息,有興趣的朋友們閱讀下。
    2020-07-07
  • python re.match()用法相關(guān)示例

    python re.match()用法相關(guān)示例

    這篇文章主要介紹了python re.match()用法相關(guān)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • python繪制直線的方法

    python繪制直線的方法

    這篇文章主要為大家詳細(xì)介紹了python繪制直線的方法,繪制直線通用方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • 教你怎么用Python實(shí)現(xiàn)多路徑迷宮

    教你怎么用Python實(shí)現(xiàn)多路徑迷宮

    這篇文章主要介紹了教你怎么用Python實(shí)現(xiàn)多路徑迷宮,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)python的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-04-04
  • 詳解python中g(shù)roupby函數(shù)通俗易懂

    詳解python中g(shù)roupby函數(shù)通俗易懂

    這篇文章主要介紹了詳解python中g(shù)roupby函數(shù)通俗易懂,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • 中秋節(jié)老家要貼對(duì)聯(lián)之python無(wú)線對(duì)聯(lián)生成器

    中秋節(jié)老家要貼對(duì)聯(lián)之python無(wú)線對(duì)聯(lián)生成器

    適逢中秋老家居然有在中秋貼對(duì)聯(lián)的習(xí)俗,于是自己開機(jī)立馬寫了一個(gè)對(duì)聯(lián)生成器,文中給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有參考價(jià)值
    2021-09-09
  • python實(shí)現(xiàn)b站直播自動(dòng)發(fā)送彈幕功能

    python實(shí)現(xiàn)b站直播自動(dòng)發(fā)送彈幕功能

    這篇文章主要介紹了python如何實(shí)現(xiàn)b站直播自動(dòng)發(fā)送彈幕,幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下
    2021-02-02
  • 解決Python在導(dǎo)入文件時(shí)的FileNotFoundError問(wèn)題

    解決Python在導(dǎo)入文件時(shí)的FileNotFoundError問(wèn)題

    這篇文章主要介紹了解決Python在導(dǎo)入文件時(shí)的FileNotFoundError問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-04-04
  • 基于Python制作一個(gè)相冊(cè)播放器

    基于Python制作一個(gè)相冊(cè)播放器

    對(duì)于相冊(cè)播放器,大家應(yīng)該都不陌生(用于瀏覽多張圖片的一個(gè)應(yīng)用)。本文將利用Python編寫一個(gè)簡(jiǎn)單的相冊(cè)播放器,感興趣的可以學(xué)習(xí)一下
    2022-06-06

最新評(píng)論

新巴尔虎右旗| 石景山区| 城步| 金川县| 通榆县| 揭阳市| 绥江县| 房产| 肥西县| 分宜县| 蒙阴县| 枣阳市| 大丰市| 长治县| 阿荣旗| 略阳县| 瑞昌市| 广灵县| 海口市| 常宁市| 巴彦淖尔市| 休宁县| 抚顺县| 铜川市| 奉节县| 宁远县| 讷河市| 阳城县| 灵石县| 比如县| 铁岭县| 黔西县| 重庆市| 南皮县| 临沧市| 霞浦县| 临漳县| 巫山县| 平安县| 神农架林区| 蓝山县|