一百行python代碼告訴你國慶哪些景點(diǎn)爆滿

概述

  • 前言
  • 思考
  • 統(tǒng)計(jì)結(jié)果
  • 爬蟲技術(shù)分析
  • 爬蟲代碼實(shí)現(xiàn)
  • 爬蟲分析實(shí)現(xiàn)
  • 后記

前言

舉國歡慶的國慶節(jié)馬上就要到來了,你想好去哪里看人山人海了嗎?還是窩在家里充電學(xué)習(xí)呢?說起國慶,塞車與爆滿這兩個(gè)詞必不可少荣堰,去年國慶我在想要是我能提前知道哪些景點(diǎn)爆滿就好了,就不用去湊熱鬧了竭翠。于是我開始折騰,想用 python 抓取有關(guān)出行方面的數(shù)據(jù)薇搁,便有了這篇文章斋扰。如果我的文章對你有幫助,歡迎關(guān)注啃洋、點(diǎn)贊传货、轉(zhuǎn)發(fā),這樣我會更有動(dòng)力做原創(chuàng)分享宏娄。

弘揚(yáng)一下社會主義核心價(jià)值觀

思考

(此段可跳過)要抓取出行方面的數(shù)據(jù)還不簡單问裕,直接去看看攜程旅游、馬蜂窩這類網(wǎng)站看看有沒有數(shù)據(jù)抓取孵坚。但是實(shí)際上這些網(wǎng)站并沒有比較好的格式化的數(shù)據(jù)供我們抓取粮宛,或許是我沒找到吧。我在想卖宠,有沒有什么折中的辦法巍杈。然而,就這樣半天過去了扛伍,突然想到筷畦,要出行肯定會查找相關(guān)的出行攻略吧,那么關(guān)鍵詞就是一個(gè)突破口刺洒,可以查詢百度指數(shù)來看看哪些景點(diǎn)被查詢的次數(shù)最多鳖宾,那么就可以大概知道哪些景點(diǎn)會爆滿了。

統(tǒng)計(jì)結(jié)果

此次的統(tǒng)計(jì)結(jié)果只是從側(cè)面反映景點(diǎn)爆滿的問題逆航,未必是完全準(zhǔn)確的鼎文,僅供參考。此次統(tǒng)計(jì)的景點(diǎn)共有 100 個(gè):




桂林纸泡、三亞漂问、泰山的搜索量都是杠杠的赖瞒,這第一梯隊(duì)的地方能不去就別去了,去了也是人山人海的蚤假,爆滿是無疑的了栏饮。


捂臉.jpg
top0-10

第二梯隊(duì)的搜索量也不差,日均搜索量還是上萬的磷仰,謹(jǐn)慎行動(dòng)袍嬉。


top10-20

第三梯隊(duì)下來就可以考慮考慮,為了避免不必要的塞車與等待灶平,建議大家還是呆在家里吧K磐ā!逢享!


top20-30

第四梯隊(duì)?wèi)?yīng)該沒太大的問題罐监,建議出去溜達(dá)溜達(dá)。


top30-40

都到第五梯隊(duì)了瞒爬,就可以放心地玩耍了弓柱。經(jīng)歷了那么多的煩心事,是該好好放飛一下自己了侧但。


top40-50

爬蟲技術(shù)分析

  • 請求庫:selenium
  • HTML 解析:使用正則匹配
  • 數(shù)據(jù)可視化:pyecharts
  • 數(shù)據(jù)庫:MongoDB
  • 數(shù)據(jù)庫連接:pymongo

爬蟲分析實(shí)現(xiàn)

此次文章能夠?qū)崿F(xiàn)參考效果矢空,完全是因?yàn)槎稒C(jī)靈。首先是選取爬蟲來源禀横,攜程與馬蜂窩沒有結(jié)構(gòu)化的數(shù)據(jù)屁药,我們就換一種思路。首先是想到百度指數(shù)柏锄,如圖:

百度指數(shù)

但是酿箭,分析源代碼之后,你就會發(fā)現(xiàn)坑爹之處了绢彤,它的數(shù)據(jù)都是以圖片展示的七问,你不能直接獲取到源碼,考慮到國慶馬上就要到來茫舶,我換了一個(gè)指數(shù)平臺械巡,轉(zhuǎn)戰(zhàn)搜狗指數(shù),這個(gè)平臺可以直接獲取到源數(shù)據(jù)饶氏,關(guān)鍵是讥耗,還有微信熱度可以爬取。當(dāng)然疹启,你執(zhí)意要使用百度指數(shù)古程,這里也是有方法的,抓取到數(shù)據(jù)之后喊崖,使用圖像識別來識別文中的數(shù)據(jù)挣磨,提供一個(gè)鏈接爬蟲實(shí)戰(zhàn)——四大指數(shù)之百度指數(shù)(三)
關(guān)于數(shù)據(jù)清洗方面雇逞,這里篩選了數(shù)據(jù)量過小,和數(shù)據(jù)量異常大的景點(diǎn)茁裙,詳情在源碼中查看塘砸。
搜狗指數(shù)

# 這是數(shù)據(jù)展示的代碼片段
def show_data(self):
    for index in range(5):
        queryArgs = {"day_avg_pv": {"$lt": 100000}}
        rets = self.zfdb.national_month_index.find(queryArgs).sort("day_avg_pv", pymongo.DESCENDING).limit(10).skip(index*10)
        atts = []
        values = []
        file_name = "top" + str(index * 10) + "-" + str((index + 1) * 10) + ".html"
        for ret in rets:
            print(ret)
            atts.append(ret["address"])
            values.append(ret["day_avg_pv"])
        self.show_line("各景點(diǎn) 30 天內(nèi)平均搜索量", atts, values)
        os.rename("render.html", file_name)

爬蟲代碼實(shí)現(xiàn)

# 這是數(shù)據(jù)爬取的代碼片段
def get_index_data(self):
    try:
        for url in self.get_url():
            print("當(dāng)前地址為:" + url)
            self.browser.get(url)
            self.browser.implicitly_wait(10)
            ret = re.findall(r'root.SG.data = (.*)}]};', self.browser.page_source)
            totalJson = json.loads(ret[0] + "}]}")
            topPvDataList = totalJson["topPvDataList"]
            infoList = totalJson["infoList"]
            pvList = totalJson["pvList"]
            for index, info in enumerate(infoList):
                for pvDate in pvList[index]:
                    print("index => "+str(index)+"地址 => "+info["kwdName"] + "日期 => " + str(pvDate["date"]) + " => " + str(pvDate["pv"]) + " => " + str(
                        info["avgWapPv"]) + " => " + str(info["kwdSumPv"]["sumPv"]) + " => ")
                    self.zfdb.national_day_index.insert({
                        "address": info["kwdName"],  # 地名
                        "date": pvDate["date"],  # 日期
                        "day_pv": pvDate["pv"],  # 日訪問量
                    })
                self.zfdb.national_month_index.insert({
                    "address": info["kwdName"],  # 地名
                    "day_avg_pv": info["avgWapPv"],  # 平均訪問量
                    "sum_pv": info["kwdSumPv"]["sumPv"],  # 總訪問量
                })
    except :
        print("exception")

后記

整篇爬蟲文章分析到這里就結(jié)束晤锥,不過還是對百度指數(shù)很有執(zhí)念掉蔬,想找個(gè)時(shí)間寫一篇相關(guān)的文章才行,不搞定它感覺心里有塊疙瘩矾瘾,或許這就是程序員最后的倔強(qiáng)女轿,最后祝大家國慶假期愉快,不用寫代碼壕翩。

本篇文章首發(fā)于公眾號「zone7」蛉迹,關(guān)注公眾號獲取最新推文,后臺回復(fù)【國慶指數(shù)】獲取源碼放妈。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末婿禽,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子大猛,更是在濱河造成了極大的恐慌,老刑警劉巖淀零,帶你破解...
    沈念sama閱讀 216,470評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件挽绩,死亡現(xiàn)場離奇詭異,居然都是意外死亡驾中,警方通過查閱死者的電腦和手機(jī)唉堪,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來肩民,“玉大人唠亚,你說我怎么就攤上這事〕痔担” “怎么了灶搜?”我有些...
    開封第一講書人閱讀 162,577評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長工窍。 經(jīng)常有香客問我割卖,道長,這世上最難降的妖魔是什么患雏? 我笑而不...
    開封第一講書人閱讀 58,176評論 1 292
  • 正文 為了忘掉前任鹏溯,我火速辦了婚禮,結(jié)果婚禮上淹仑,老公的妹妹穿的比我還像新娘丙挽。我一直安慰自己肺孵,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,189評論 6 388
  • 文/花漫 我一把揭開白布颜阐。 她就那樣靜靜地躺著平窘,像睡著了一般。 火紅的嫁衣襯著肌膚如雪瞬浓。 梳的紋絲不亂的頭發(fā)上初婆,一...
    開封第一講書人閱讀 51,155評論 1 299
  • 那天,我揣著相機(jī)與錄音猿棉,去河邊找鬼磅叛。 笑死,一個(gè)胖子當(dāng)著我的面吹牛萨赁,可吹牛的內(nèi)容都是我干的弊琴。 我是一名探鬼主播,決...
    沈念sama閱讀 40,041評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼杖爽,長吁一口氣:“原來是場噩夢啊……” “哼敲董!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起慰安,我...
    開封第一講書人閱讀 38,903評論 0 274
  • 序言:老撾萬榮一對情侶失蹤腋寨,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后化焕,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體萄窜,經(jīng)...
    沈念sama閱讀 45,319評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,539評論 2 332
  • 正文 我和宋清朗相戀三年撒桨,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了查刻。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,703評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡凤类,死狀恐怖穗泵,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情谜疤,我是刑警寧澤佃延,帶...
    沈念sama閱讀 35,417評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站夷磕,受9級特大地震影響苇侵,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜企锌,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,013評論 3 325
  • 文/蒙蒙 一榆浓、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧撕攒,春花似錦陡鹃、人聲如沸烘浦。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,664評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽闷叉。三九已至,卻和暖如春脊阴,著一層夾襖步出監(jiān)牢的瞬間握侧,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,818評論 1 269
  • 我被黑心中介騙來泰國打工嘿期, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留品擎,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,711評論 2 368
  • 正文 我出身青樓备徐,卻偏偏與公主長得像萄传,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子蜜猾,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,601評論 2 353

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,072評論 25 707
  • 用兩張圖告訴你秀菱,為什么你的 App 會卡頓? - Android - 掘金 Cover 有什么料? 從這篇文章中你...
    hw1212閱讀 12,714評論 2 59
  • 爬蟲文章 in 簡書程序員專題: like:128-Python 爬取落網(wǎng)音樂 like:127-【圖文詳解】py...
    喜歡吃栗子閱讀 21,752評論 4 412
  • 瀏覽器緩存機(jī)制 強(qiáng)緩存:瀏覽器不發(fā)送請求到服務(wù)器蹭睡,直接從本地硬盤讀取文件(200 from cace)衍菱。通過請求頭...
    曉夢初醒my閱讀 283評論 0 0
  • 畢業(yè)過后我在短短一年之內(nèi)輾轉(zhuǎn)了三個(gè)地方梦碗,從郊區(qū)到一環(huán)再到二環(huán),然后在二環(huán)一個(gè)被大路“井”字包圍的小區(qū)內(nèi)安定了下來蓖救。...
    Mr_莫兮閱讀 786評論 0 5