新聞中心
旅游是調(diào)節(jié)心情的有效途徑,越來(lái)越多的上班族和學(xué)生期待利用假期時(shí)間外出游 玩來(lái)開(kāi)拓眼界、舒緩壓力。然而真正有了假期,許多人卻會(huì)因“去哪玩”的問(wèn)題倍感困惑,六月份正是出行的好時(shí)節(jié),期間還有端午節(jié)小長(zhǎng)假,就讓我們一起來(lái)學(xué)習(xí)如何利用python來(lái)安排自己的出行計(jì)劃吧。

成都創(chuàng)新互聯(lián)公司于2013年開(kāi)始,是專(zhuān)業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都網(wǎng)站制作、做網(wǎng)站網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元遼中做網(wǎng)站,已為上家服務(wù),為遼中各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:028-86922220
一.數(shù)據(jù)的獲取
最近幾年,既省錢(qián)又休閑的自助游逐漸成為年輕人出行的***,這里推薦一個(gè)我個(gè)人比較喜歡的旅游網(wǎng)站——螞蜂窩,這次通過(guò)分析“驢友”們的出行計(jì)劃來(lái)規(guī)劃我們自己的行程,***步當(dāng)然是爬取網(wǎng)站數(shù)據(jù)啦
1.分析目標(biāo)網(wǎng)頁(yè)
為了獲取大家的出行信息,我們進(jìn)入網(wǎng)站的“結(jié)伴”板塊,查看“一個(gè)月以?xún)?nèi)”的出行計(jì)劃,可以看到隨著頁(yè)面的更改url并沒(méi)有發(fā)生變化,初步判斷該網(wǎng)頁(yè)是通過(guò)js加載的,要想爬取首先得找到真實(shí)url和返回的數(shù)據(jù)格式。
經(jīng)過(guò)一番嘗試,我們成功找到了請(qǐng)求返回的真實(shí)url和關(guān)鍵參數(shù),這里返回的是json格式的數(shù)據(jù),里面包含了一個(gè)html文本。
2.確定抓取內(nèi)容
在正式開(kāi)始爬取數(shù)據(jù)之前,我們要先確定需要爬取哪些數(shù)據(jù)。行程的列表頁(yè)清晰地展現(xiàn)了目的地、行程簡(jiǎn)介、發(fā)起人ID和性別(呵呵),雖然這些信息非常有參考價(jià)值,但是如果能獲取更多信息無(wú)疑會(huì)對(duì)我們的行程規(guī)劃更有幫助,所以還是要進(jìn)入詳情頁(yè)來(lái)看一看。
可以看到,詳情頁(yè)中對(duì)出發(fā)時(shí)間、行程歷時(shí)、出發(fā)地點(diǎn)等都有詳細(xì)說(shuō)明,此外還有報(bào)名結(jié)伴人員情況,這項(xiàng)數(shù)據(jù)能在很大程度上反映小伙伴們的出行意向,所以一定要拿下來(lái)。
3.正式爬取數(shù)據(jù)
總體思路是爬取索引頁(yè)中每一個(gè)行程的發(fā)起人和詳情頁(yè)url,之后進(jìn)入詳情頁(yè)抓取出發(fā)時(shí)間、歷史、目的地、出發(fā)城市、希望人數(shù)以及報(bào)名人員情況等數(shù)據(jù),每個(gè)行程的索引頁(yè)數(shù)據(jù)和詳情頁(yè)數(shù)據(jù)合 并后作為該行程的完整數(shù)據(jù)進(jìn)行存儲(chǔ)。以下是爬蟲(chóng)程序的總?cè)肟?
- payload參數(shù):flag決定了行程的排序方式,可選值為1、2、3,分別代表“即將出發(fā)”、“***發(fā)布”、“熱門(mén)結(jié) 伴”;
- offset表示當(dāng)前頁(yè)數(shù),默認(rèn)從0開(kāi)始;middid表示行程目的地,不確定目的地值為0;timeFlage代表出 發(fā)時(shí)間,值為3表示選取一個(gè)月內(nèi)的行程。
- get_info()方法:抓取每一頁(yè)的行程信息并翻頁(yè),如果無(wú)法獲取有效信息則說(shuō)明爬取結(jié)束。
- 數(shù)據(jù)存儲(chǔ):由于數(shù)據(jù)量不大,可以先全部存儲(chǔ)到一個(gè)dataframe數(shù)據(jù)結(jié)構(gòu)中,再一次性寫(xiě)入csv文件。
二. 數(shù)據(jù)清洗
我們來(lái)看看獲取到的數(shù)據(jù)是什么樣子的,可以看到,每條數(shù)據(jù)中都有很多干擾信息:
- “出發(fā)時(shí)間”一欄我們想要 的僅僅是日期數(shù)據(jù);
- “報(bào)名人數(shù)”一欄我們想要的僅僅是數(shù)字,而不需要多余的修飾文字等等;
- “部分出行” 計(jì)劃涵蓋了多個(gè)目的地,這對(duì)我們的旅游目的地分析是非常不利的
所以,我們必須先對(duì)獲取到的數(shù)據(jù)進(jìn)行清洗, 以期為正式的數(shù)據(jù)分析奠定基礎(chǔ)。
1.規(guī)范格式
首先對(duì)歷時(shí)、希望人數(shù)、報(bào)名人數(shù)(女)、報(bào)名人數(shù)(男)這幾項(xiàng)數(shù)據(jù)進(jìn)行清洗,僅保留數(shù)字部分;其次對(duì)出發(fā)是 按、出發(fā)地點(diǎn)相關(guān)數(shù)據(jù)進(jìn)行情況,取到“:”及前面的內(nèi)容。感謝pandas.Series.str方法,使我們可以非常簡(jiǎn)單地完 成上述工作,功能函數(shù)如下:
only_num(self, col_list):去除數(shù)據(jù)中的非數(shù)字部分。
no_colon(self, col_list):去除數(shù)據(jù)中的“:”及其前面的內(nèi)容。
2.拆分目的地
剛才說(shuō)到過(guò),一個(gè)行程中包含多個(gè)目的地會(huì)對(duì)我們的分析造成干擾,這里的解決思路是對(duì)目的地?cái)?shù)據(jù)進(jìn)行拆分。
將一列數(shù)據(jù)拆分成X列(X為該行程包含的目的地個(gè)數(shù)),同樣是使用pandas.Series.str方法,代碼如下:
三.數(shù)據(jù)分析
現(xiàn)在我們可以對(duì)數(shù)據(jù)進(jìn)行分析查找六月份的旅行規(guī)律了,為了便于觀察,這里使用pyecharts進(jìn)行可視化處理。
1.男女比例
首先對(duì)參與出行計(jì)劃的人員性別進(jìn)行分析,利用dataframe的sum()和groupby().count()方法可以很容易獲得行程 發(fā)布者和參與者的性別分布:
從圖中可以看出,發(fā)起人以女性居多,約占總數(shù)的60%,而參與者剛好相反,男性比 例約為60%,估計(jì)是女同胞們更擅長(zhǎng)精心策劃行程,而男同胞們大多比較“懶”吧~
2.出發(fā)時(shí)間
這里我們首先用dataframen的groupby()方法,以“出行時(shí)間”為關(guān)鍵字對(duì)數(shù)據(jù)進(jìn)行分組,分別統(tǒng)計(jì)每天的行程數(shù)量 和參與者數(shù)量,然后畫(huà)出折線圖。
從結(jié)果來(lái)看,6月15、16兩天是六月份出行的高峰期(這個(gè)時(shí)間剛好開(kāi)始端午節(jié)假期),端午節(jié)有出行計(jì)劃的朋友 們記得提前準(zhǔn)備哈。除此之外的幾個(gè)波峰也都出現(xiàn)在周末,看來(lái)喜歡自助游的朋友中還是上班族(也可能是大學(xué) 生)居多啊。
3.目的地選擇
先來(lái)分析行程發(fā)布數(shù)據(jù),首先將數(shù)據(jù)中所有的目的地加入到一個(gè)list中(包含重復(fù)數(shù)據(jù)),然后使用collections中的Counter()方法統(tǒng)計(jì)每個(gè)目的地出現(xiàn)的頻次,***制圖。
圖中列出了頻次較高的幾個(gè)目的地,彩條越長(zhǎng)表示出現(xiàn)的頻次越多。稍微留意下我們會(huì)發(fā)現(xiàn),大家比較青睞的都是一些商業(yè)化程度比較低的地區(qū),比如拉薩,新疆!
其實(shí)作為一名自由行愛(ài)好者,我同樣比較喜歡更加原始和純粹的風(fēng)光,對(duì)于沉淀心情確實(shí)會(huì)起到更好的效果,大家如果有出行計(jì)劃又不知道去哪玩的話,不妨從上面的目的地中選一下。
4.參與者情況如何
首先分別統(tǒng)計(jì)出各個(gè)目的地報(bào)名的男性數(shù)量和女性數(shù)量?jī)?chǔ)存到兩個(gè)dict中,分別取參與 人數(shù)最多的10個(gè)目的地,***將兩組數(shù)據(jù)合并、去重......
然后我們會(huì)驚奇地發(fā)現(xiàn),雖然兩個(gè)序列中具體排名不盡相 同,但是男性和女性最想去的10個(gè)目的地居然完全一致。
不過(guò)各個(gè)地點(diǎn)的男女人數(shù)還是有較大差異的,如果想來(lái)一場(chǎng)***的邂逅,或許下面這張圖會(huì)有點(diǎn)幫助哈。
文章題目:我想帶你去旅行,我用Python提前做了一份端午旅游攻略,請(qǐng)收下!
分享URL:http://fisionsoft.com.cn/article/cdgessc.html


咨詢(xún)
建站咨詢(xún)
