在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

中午不知道吃什么,用Python爬取美團外賣評論幫你選餐

馬哥Linux運維 ? 來源:YXQ ? 2019-03-26 15:43 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

一、介紹

朋友暑假實踐需要美團外賣APP評論這一份數據,一開始我想,這不就抓取網頁源代碼再從中提取數據就可以了嗎,結果發現事實并非如此,情況和之前崔大講過的分析Ajax來抓取今日頭條街拍美圖類似,都是通過異步加載的方式傳輸數據,不同的是這次的是通過JS傳輸,其他的基本思路基本一致,希望那些數據能幫到她吧

二、流程

目標站點分析用瀏覽器打開美團外賣APP評論,F12

1.首先我們要找到我們想要的評論數據,在第一次“失敗”的直接抓取網頁源代碼后,我們發現它是通過Ajax加載的,我們點擊JS選項,可以發現JS項目里面的返回結果有我們想要的數據,勾選Preserve log,當點擊查看更多評論時,后臺(JS里)會出現新的Ajax請求,發現還有參數start和的變化,其他請求參數不變,start的參數變化是以10遞增的,的參數變化可就讓人摸不著頭腦(這個時候我們也不要方,因為大多情況下沒有規律的參數都是沒用的)

2.經過我們對http://comment.mobilem.360.cn/comment/getComments?callback=jQuery17203361018749253357_1503362214558&baike=%E7%BE%8E%E5%9B%A2%E5%A4%96%E5%8D%96+Android_com.sankuai.meituan.takeoutnew&c=message&a=getmessage&start=0&count=10&_=1503362215647進行分析后發現它的標準式為‘http://comment.mobilem.360.cn/comment/getComments?&baike=%E7%BE%8E%E5%9B%A2%E5%A4%96%E5%8D%96+Android_com.sankuai.meituan.takeoutnew&start=’+str(i*10),i每次增加1,就包含新的十條評論的內容,所以我們通過改變i的值就可以拿到不同的數據

分析url的網頁源代碼,在源代碼里有我們想要的評論數據,我們可以用正則(在這里正則還是比較好用的)把我們想要的信息弄下來

開啟循環,批量抓取

保存數據至文本和數據庫

#之前是這樣處理的:def parse_one_page(html):    pattern2 = re.compile('"m_type":"0",(.*?),"username"', re.S)    items=re.findall(pattern2,html)    for item in items:        item = "{" + item + "}"        item=json.loads(item)        write_to_file(item)        print(item)        save_to_mongo(item)#皮皮哥告訴了我他的獨家正則匹配方法可以匹配出來,這樣的確獲得的item沒有編碼問題def parse_one_page(html):    pattern = '"content":".*?"'    items=re.findall(pattern,html)    for item in items:        item =eval(item.split(':',1)[1])        write_to_file(item)        print(item)        save_to_mongo(item)#對一般正則寫法獲得的item進行的方法,這是從皮皮哥那里得知的,親測有效def parse_one_page(html):    pattern = re.compile('rsion_name".*?"content":(.*?),"username"', re.S)    items=re.findall(pattern,html)    #print(items)    for item in items:        item = item.encode('utf-8').decode('unicode_escape')        write_to_file(item)        print(item)        save_to_mongo(item)
三、代碼
#config.pyMONGO_URL='localhost'MONGO_DB='meituan'MONGO_TABLE='meituan'
import requestsfrom requests.exceptions import RequestExceptionimport jsonimport refrom day31.config import *import pymongoclient=pymongo.MongoClient(MONGO_URL)db=client[MONGO_DB]base_url='http://comment.mobilem.360.cn/comment/getComments?callback=jQuery17209056727722758744_1502991196139&baike=%E7%BE%8E%E5%9B%A2%E5%A4%96%E5%8D%96+Android_com.sankuai.meituan.takeoutnew&start='def the_url(url):    try:        response = requests.get(url)        if response.status_code==200:            response.encoding='utf-8'            return response.text        return None    except RequestException:        print('請求出錯')        return Nonedef the_total():    html=the_url(base_url)    pattern1 = re.compile('"total":(.*?),"messages"', re.S)    Total = re.findall(pattern1, html)    Total=int(':'.join(Total))    #print(type(Total))    show='總計評論%d條'%Total    print(show)    write_to_file(show)    return Totaldef parse_one_page(html):    pattern2 = re.compile('"m_type":"0",(.*?),"username"', re.S)    items=re.findall(pattern2,html)    for item in items:        item = "{" + item + "}"        item=json.loads(item)        write_to_file(item)        print(item)        save_to_mongo(item)def save_to_mongo(result):    try:        if db[MONGO_TABLE].insert(result):            print('儲存到MongoDB成功',result)    except Exception:        print('儲存到MongoDB失敗',result)def write_to_file(content):    with open('meituan_result.text','a',encoding='utf-8') as f:        f.write(json.dumps(content,ensure_ascii=False)+'\n')        f.close()def main():    Total=the_total()    Total=int(Total/10)+2    for i in range(Total):        url = base_url + str(i*10)        if the_url(url)!=None:            html=the_url(url)            parse_one_page(html)        else:            print('輸完啦')    ps='PS:因為有些評論空,所以實際評論比抓取的少'   #這是我瞎猜的    write_to_file(ps)    print(ps)if __name__ == '__main__':    main()

四、最后得到的數據視圖和文件

五、總結

1.程序報錯很正常,不要一報錯就問別人,先自己思考、百度

2.在數據類型處理方面的知識還要加強

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 源代碼
    +關注

    關注

    96

    文章

    2952

    瀏覽量

    68108
  • python
    +關注

    關注

    56

    文章

    4825

    瀏覽量

    86428

原文標題:中午不知道吃什么?用Python爬取美團外賣評論幫你選餐!

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    編譯錯誤: error: unrecognizable insn,不知道原因,請教!

    start_gui.exe生成的代碼,再用SEGGER Embedded打開,編譯有錯,不知道是什么原因,請教各位大佬?
    發表于 06-23 14:45

    食堂消費機“斷網斷電也能用”的工作原理是什么?

    食堂最怕的是什么?大概就是效率太低,排隊太長還有食品安全等問題。而在實際使用食堂消費機、刷臉支付
    的頭像 發表于 05-13 10:14 ?185次閱讀
    食堂<b class='flag-5'>團</b><b class='flag-5'>餐</b>消費機“斷網斷電也能用”的工作原理是什么?

    【國產信創CPU全攻略】分享國產CPU品牌排行榜!從排名到避坑!

    最近收到不少粉絲留言:“想換國產電腦,但國產CPU品牌太多,完全不知道怎么!”“信創CPU排名到底靠不靠譜?”今天咱們就來嘮嘮這個話題——國產CPU品牌有哪些?信創CPU怎么挑?附上一份接地氣的「信創CPU排名一覽表」,幫你
    的頭像 發表于 04-14 14:34 ?1385次閱讀
    【國產信創CPU全攻略】分享國產CPU品牌排行榜!從排名到避坑!

    光公司DDR,絲印4BC77 D8CJN,是什么型號

    在一塊RK3576的開發板上,有一顆光公司的DDR,絲印4BC77 D8CJN,但不知道是什么型號。有誰知道嗎?
    發表于 03-24 10:48

    探秘京東外賣幕后:地圖&amp;軌跡技術探尋

    作者:京東物流 丁杰 最近,京東正式宣布進軍外賣業務,迅速引發了廣泛關注。當大家滿心期待著品嘗到更多美食、享受更便捷服務時,不知道是否留意到一個技術細節:未來在京東外賣的訂單頁面,騎手送
    的頭像 發表于 03-18 14:01 ?1526次閱讀
    探秘京東<b class='flag-5'>外賣</b>幕后:地圖&amp;軌跡技術探尋

    ADS805E測量跳躍幅度很大,不知道是為什么?

    我按照手冊上直流耦合連接電路,輸入是1.5V~3.5V范圍,SEL與VREF相連,430定時器輸出轉換時鐘,結果測量直流時,AD測量結果在幾個值之間跳躍,跳躍幅度很大,不知道是為什么,引腳電壓控制3.3V。
    發表于 01-21 07:46

    想用AMC1203做電流采樣,AMC1210做SINC濾波,不知道這樣可不可行?

    想用AMC1203做電流采樣,AMC1210做SINC濾波,不知道這樣可不可行? 網上有帖子說AMC1210有問題,你們不推薦采用AMC1210做SINC濾波,而是推薦采用CPLD做SINC濾波,不知道是不是真的?
    發表于 01-14 07:22

    校園點訂餐外賣跑腿Java源碼

    創建一個校園點訂餐外賣跑腿系統是一個復雜的項目,涉及到前端、后端、數據庫設計等多個方面。在這里,我可以提供一個簡化的Java后端示例,使用Spring Boot框架來搭建一個基本的API服務。這個
    的頭像 發表于 12-24 14:55 ?578次閱讀
    校園點<b class='flag-5'>餐</b>訂餐<b class='flag-5'>外賣</b>跑腿Java源碼

    DAC7714應用于MCBSP模塊,clk與cs都是模塊內部產生的,LD信號不知道怎么給出?

    DAC7714應用于MCBSP模塊,clk與cs都是模塊內部產生的,但是LD信號不知道怎么給出,才能與cs同步,符合datasheet的時序。 我本身是判斷XRDY標志位是否為1來決定LD信號,但是LD信號總是與CS信號有錯位,轉換錯誤.希望哪位大神指導一下,謝謝。
    發表于 12-19 08:09

    華為Mate系列新品攜手外賣首發

    華為公司近日宣布,將于11月26日正式發布Mate70系列與Mate X6等多款新品。此次發布會不僅吸引了眾多科技愛好者的關注,更值得一提的是,華為與外賣達成合作,將開創電子產品零售的新模式
    的頭像 發表于 11-26 10:46 ?689次閱讀

    關于陶瓷電路板你不知道的事

    陶瓷電路板(Ceramic Circuit Board),又稱陶瓷基板,是一種以陶瓷材料為基體,通過精密的制造工藝在表面形成電路圖形的高技術產品,快來看看哪些是您還不知道的事?
    的頭像 發表于 10-21 11:55 ?927次閱讀
    關于陶瓷電路板你<b class='flag-5'>不知道</b>的事

    又一電工不知道,施耐德變頻器怎么復位,如果不告訴你,你知道怎么復位嗎?

    維修 我給他說,可能以前沒接觸過施耐德的變頻器,就不知道它還有一個蓋子,要復位的話,就要把蓋子打開,第一次找不到也正常,要是經常斷電重啟的話,對設備不好。 變頻器修理 之所以分享給大家,就是想告訴那些沒接觸過施耐
    的頭像 發表于 10-12 15:15 ?1093次閱讀
    又一電工<b class='flag-5'>不知道</b>,施耐德變頻器怎么復位,如果不告訴你,你<b class='flag-5'>知道</b>怎么復位嗎?

    FDA的壓擺率都太高,TPA6133的SR只有0.4V/us,不知道這樣搭配會對20-20K音頻范圍產生什么影響?

    準備搭棚一個聲卡自己玩,了一些便宜、5V運作、結構簡單的材料,但就一個問題卡住。。。 FDA的壓擺率都太高,TPA6133的SR只有0.4V/us,不知道這樣搭配會對20-20K音頻范圍產生什么影響??產生的影響有沒有解決方法?? 設想結構如圖所示
    發表于 08-23 06:40

    新手嘗試做一個LED驅動電路,不知道電路有沒有問題

    TP8006穩流驅動,最后留出LED插口。 因為不是很懂硬件設計,不知道做的模塊能不能行,很希望各位提提意見,讓我認識認識硬件設計上的缺陷。
    發表于 07-24 18:35

    電距離什么檢測設備

    電距離是指在電氣設備中,不同電位的導體之間,通過絕緣材料隔離的最短距離。電距離的檢測對于確保電氣設備的安全運行至關重要。本文將介紹電距離的檢測設備及其使用方法。 一、電距離檢測
    的頭像 發表于 07-12 15:37 ?1087次閱讀
    主站蜘蛛池模板: 欧美区在线 | 午夜爱爱毛片xxxx视频免费看 | 6080伦理久久精品亚洲 | 国产三级黄色毛片 | 欧美性一区 | 深爱五月综合网 | 在线91精品亚洲网站精品成人 | 双性强迫开宫灌满h | 色综合久久综合欧美综合图片 | 高hnp汁水bl总受软萌受 | 国产精品29页| 黄色短视频软件 | 日本a级在线 | 久久亚洲国产成人精品性色 | 狠狠色 综合色区 | 午夜激情福利网 | 亚洲 欧洲 日韩 | 女毛片| 黄色录像视频网站 | 国色天香精品亚洲精品 | 亚洲色图欧美在线 | 亚洲一区二区免费视频 | 日韩一级片免费在线观看 | 好大好紧好爽好湿润视频 | 在线中文字幕一区 | 美女视频永久黄网站在线观看 | 国产大乳喷奶水在线看 | 婷婷免费高清视频在线观看 | 国产高清视频免费最新在线 | 麦克斯奥特曼在线观看 | 天天操夜夜摸 | 成人精品福利 | 欧美色图网站 | 亚洲伊人色一综合网 | 性欧美高清极品猛交 | 国产免费成人在线视频 | 精品女视频在线观看免费 | 天天操操操操 | 韩国三级hd中文字幕久久精品 | 色偷偷亚洲天堂 | 午夜影院免费观看视频 |