如何用Python做一份旅游攻略

如何用Python做一份旅游攻略,很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對(duì)這個(gè)行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡(jiǎn)單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名注冊(cè)、虛擬主機(jī)、營銷軟件、網(wǎng)站建設(shè)、滿洲網(wǎng)站維護(hù)、網(wǎng)站推廣。

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

一.數(shù)據(jù)的獲取

最近幾年,既省錢又休閑的自助游逐漸成為年輕人出行的最愛,這里推薦一個(gè)我個(gè)人比較喜歡的旅游網(wǎng)站螞蜂窩,這次通過分析“驢友”們的出行計(jì)劃來規(guī)劃我們自己的行程,第一步當(dāng)然是爬取網(wǎng)站數(shù)據(jù)啦

1.分析目標(biāo)網(wǎng)頁

為了獲取大家的出行信息,我們進(jìn)入網(wǎng)站的“結(jié)伴”板塊,查看“一個(gè)月以內(nèi)”的出行計(jì)劃,可以看到隨著頁面的更改url并沒有發(fā)生變化,初步判斷該網(wǎng)頁是通過js加載的,要想爬取首先得找到真實(shí)url和返回的數(shù)據(jù)格式。

如何用Python做一份旅游攻略

經(jīng)過一番嘗試,我們成功找到了請(qǐng)求返回的真實(shí)url和關(guān)鍵參數(shù),這里返回的是json格式的數(shù)據(jù),里面包含了一個(gè)html文本。

如何用Python做一份旅游攻略

2.確定抓取內(nèi)容

在正式開始爬取數(shù)據(jù)之前,我們要先確定需要爬取哪些數(shù)據(jù)。行程的列表頁清晰地展現(xiàn)了目的地、行程簡(jiǎn)介、發(fā)起人ID和性別(呵呵),雖然這些信息非常有參考價(jià)值,但是如果能獲取更多信息無疑會(huì)對(duì)我們的行程規(guī)劃更有幫助,所以還是要進(jìn)入詳情頁來看一看。

如何用Python做一份旅游攻略

可以看到,詳情頁中對(duì)出發(fā)時(shí)間、行程歷時(shí)、出發(fā)地點(diǎn)等都有詳細(xì)說明,此外還有報(bào)名結(jié)伴人員情況,這項(xiàng)數(shù)據(jù)能在很大程度上反映小伙伴們的出行意向,所以一定要拿下來。

3.正式爬取數(shù)據(jù)

總體思路是爬取索引頁中每一個(gè)行程的發(fā)起人和詳情頁url,之后進(jìn)入詳情頁抓取出發(fā)時(shí)間、歷史、目的地、出發(fā)城市、希望人數(shù)以及報(bào)名人員情況等數(shù)據(jù),每個(gè)行程的索引頁數(shù)據(jù)和詳情頁數(shù)據(jù)合 并后作為該行程的完整數(shù)據(jù)進(jìn)行存儲(chǔ)。以下是爬蟲程序的總?cè)肟?

如何用Python做一份旅游攻略

  • payload參數(shù):flag決定了行程的排序方式,可選值為1、2、3,分別代表“即將出發(fā)”、“***發(fā)布”、“熱門結(jié) 伴”;

  • offset表示當(dāng)前頁數(shù),默認(rèn)從0開始;middid表示行程目的地,不確定目的地值為0;timeFlage代表出 發(fā)時(shí)間,值為3表示選取一個(gè)月內(nèi)的行程。

  • get_info()方法:抓取每一頁的行程信息并翻頁,如果無法獲取有效信息則說明爬取結(jié)束。

  • 數(shù)據(jù)存儲(chǔ):由于數(shù)據(jù)量不大,可以先全部存儲(chǔ)到一個(gè)dataframe數(shù)據(jù)結(jié)構(gòu)中,再一次性寫入csv文件。

二. 數(shù)據(jù)清洗

我們來看看獲取到的數(shù)據(jù)是什么樣子的,可以看到,每條數(shù)據(jù)中都有很多干擾信息:

  • “出發(fā)時(shí)間”一欄我們想要 的僅僅是日期數(shù)據(jù);

  • “報(bào)名人數(shù)”一欄我們想要的僅僅是數(shù)字,而不需要多余的修飾文字等等;

  • “部分出行” 計(jì)劃涵蓋了多個(gè)目的地,這對(duì)我們的旅游目的地分析是非常不利的

如何用Python做一份旅游攻略

所以,我們必須先對(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ù)如下:

如何用Python做一份旅游攻略

only_num(self, col_list):去除數(shù)據(jù)中的非數(shù)字部分。

no_colon(self, col_list):去除數(shù)據(jù)中的“:”及其前面的內(nèi)容。

2.拆分目的地

剛才說到過,一個(gè)行程中包含多個(gè)目的地會(huì)對(duì)我們的分析造成干擾,這里的解決思路是對(duì)目的地?cái)?shù)據(jù)進(jìn)行拆分。

將一列數(shù)據(jù)拆分成X列(X為該行程包含的目的地個(gè)數(shù)),同樣是使用pandas.Series.str方法,代碼如下:

如何用Python做一份旅游攻略

三.數(shù)據(jù)分析

現(xiàn)在我們可以對(duì)數(shù)據(jù)進(jìn)行分析查找六月份的旅行規(guī)律了,為了便于觀察,這里使用pyecharts進(jìn)行可視化處理。

1.男女比例

首先對(duì)參與出行計(jì)劃的人員性別進(jìn)行分析,利用dataframe的sum()和groupby().count()方法可以很容易獲得行程 發(fā)布者和參與者的性別分布:

如何用Python做一份旅游攻略

從圖中可以看出,發(fā)起人以女性居多,約占總數(shù)的60%,而參與者剛好相反,男性比 例約為60%,估計(jì)是女同胞們更擅長精心策劃行程,而男同胞們大多比較“懶”吧~

2.出發(fā)時(shí)間

這里我們首先用dataframen的groupby()方法,以“出行時(shí)間”為關(guān)鍵字對(duì)數(shù)據(jù)進(jìn)行分組,分別統(tǒng)計(jì)每天的行程數(shù)量 和參與者數(shù)量,然后畫出折線圖。

如何用Python做一份旅游攻略

從結(jié)果來看,6月15、16兩天是六月份出行的高峰期(這個(gè)時(shí)間剛好開始端午節(jié)假期),端午節(jié)有出行計(jì)劃的朋友 們記得提前準(zhǔn)備哈。除此之外的幾個(gè)波峰也都出現(xiàn)在周末,看來喜歡自助游的朋友中還是上班族(也可能是大學(xué) 生)居多啊。

3.目的地選擇

先來分析行程發(fā)布數(shù)據(jù),首先將數(shù)據(jù)中所有的目的地加入到一個(gè)list中(包含重復(fù)數(shù)據(jù)),然后使用collections中的Counter()方法統(tǒng)計(jì)每個(gè)目的地出現(xiàn)的頻次,***制圖。

如何用Python做一份旅游攻略

圖中列出了頻次較高的幾個(gè)目的地,彩條越長表示出現(xiàn)的頻次越多。稍微留意下我們會(huì)發(fā)現(xiàn),大家比較青睞的都是一些商業(yè)化程度比較低的地區(qū),比如拉薩,新疆!

其實(shí)作為一名自由行愛好者,我同樣比較喜歡更加原始和純粹的風(fēng)光,對(duì)于沉淀心情確實(shí)會(huì)起到更好的效果,大家如果有出行計(jì)劃又不知道去哪玩的話,不妨從上面的目的地中選一下。

如何用Python做一份旅游攻略

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è)目的地居然完全一致。

不過各個(gè)地點(diǎn)的男女人數(shù)還是有較大差異的,如果想來一場(chǎng)***的邂逅,或許下面這張圖會(huì)有點(diǎn)幫助哈。

如何用Python做一份旅游攻略

看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對(duì)創(chuàng)新互聯(lián)的支持。

當(dāng)前文章:如何用Python做一份旅游攻略
網(wǎng)站地址:http://bm7419.com/article10/jjsjdo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營銷、網(wǎng)站導(dǎo)航、全網(wǎng)營銷推廣網(wǎng)站排名、動(dòng)態(tài)網(wǎng)站、網(wǎng)站策劃

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

手機(jī)網(wǎng)站建設(shè)