欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

1.分析美團美食網頁的url參數(shù)構成

1)搜索要點

美團美食,地址:北京,搜索關鍵詞:火鍋

2)爬取的url

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

3)說明

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

通過關鍵詞城市的url構造,解析當前url中的bj=北京,/s/后面跟搜索關鍵詞。

這樣我們就可以了解到當前url的構造。

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

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

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

分析到這里可以得知:我們的數(shù)據是以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ù)據量,offse是數(shù)據請求的開始元素,q是搜索關鍵詞poi/pcsearch/1?其中的1是北京城市的id編號。

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

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

import requests
import re


def start():
  for w in range(0, 1600, 32):
  #頁碼根據實際情況x32即可,我這里是設置50頁為上限,為了避免設置頁碼過高或者數(shù)據過少情況,定義最大上限為1600-也就是50頁,使用try-except來檢測時候異常,異常跳過該頁,一般作為無數(shù)據跳過該頁處理
    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ù)據可以在F12開發(fā)者工具下面的requests_headers中查看,需要實現(xiàn)選擇如下headers信息
      #必要情況 請求頻繁 建議增加cookie參數(shù)在headers內
      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)
      #正則獲取當前響應內容中的數(shù)據,因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ù)據的長度 是否為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方法不關閉轉碼會導致出現(xiàn)亂碼情況
if __name__ == '__main__':
  start()

運行結果如下:

本地文件:

4.總結

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

以上就是Python爬蟲實例——爬取美團美食數(shù)據的詳細內容,更多關于Python爬蟲爬取美食數(shù)據的資料請關注腳本之家其它相關文章!

相關文章

  • Python實現(xiàn)定時任務的八種方案詳解

    Python實現(xiàn)定時任務的八種方案詳解

    在日常工作中,我們常常會用到需要周期性執(zhí)行的任務,我們可以用Python直接實現(xiàn)這一功能。本文整理的是常見的Python定時任務的八種實現(xiàn)方式,需要的朋友可以參考一下
    2022-02-02
  • python進階教程之動態(tài)類型詳解

    python進階教程之動態(tài)類型詳解

    這篇文章主要介紹了python進階教程之動態(tài)類型詳解,動態(tài)類型是動態(tài)語言的特性,本文對多種動態(tài)類型應用做了講解,需要的朋友可以參考下
    2014-08-08
  • python實現(xiàn)圖像處理之PiL依賴庫的案例應用詳解

    python實現(xiàn)圖像處理之PiL依賴庫的案例應用詳解

    這篇文章主要介紹了python實現(xiàn)圖像處理之PiL依賴庫的案例應用詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下
    2021-07-07
  • python 提取html文本的方法

    python 提取html文本的方法

    在解決自然語言處理問題時,有時你需要獲得大量的文本集?;ヂ?lián)網是文本的最大來源,但是從任意HTML頁面提取文本是一項艱巨而痛苦的任務。本文將講述python高效提取html文本的方法
    2021-05-05
  • python中的多cpu并行編程

    python中的多cpu并行編程

    這篇文章主要介紹了python中的多cpu并行編程,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • 淺談Python幾種常見的歸一化方法

    淺談Python幾種常見的歸一化方法

    這篇文章主要介紹了幾種常見的歸一化方法,數(shù)據歸一化是深度學習數(shù)據預處理中非常關鍵的步驟,可以起到統(tǒng)一量綱,防止小數(shù)據被吞噬的作用,需要的朋友可以參考下
    2023-04-04
  • pytorch 梯度NAN異常值的解決方案

    pytorch 梯度NAN異常值的解決方案

    這篇文章主要介紹了pytorch 梯度NAN異常值的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • NumPy 矩陣乘法的實現(xiàn)示例

    NumPy 矩陣乘法的實現(xiàn)示例

    這篇文章主要介紹了NumPy 矩陣乘法的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-03-03
  • python實現(xiàn)ID3決策樹算法

    python實現(xiàn)ID3決策樹算法

    這篇文章主要為大家詳細介紹了python實現(xiàn)ID3決策樹算法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • Python Django中間件使用原理及流程分析

    Python Django中間件使用原理及流程分析

    這篇文章主要介紹了Python Django中間件使用原理及流程分析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-06-06

最新評論