基于python的旅游信息爬取以及數(shù)據(jù)分析_第1頁(yè)
基于python的旅游信息爬取以及數(shù)據(jù)分析_第2頁(yè)
基于python的旅游信息爬取以及數(shù)據(jù)分析_第3頁(yè)
基于python的旅游信息爬取以及數(shù)據(jù)分析_第4頁(yè)
基于python的旅游信息爬取以及數(shù)據(jù)分析_第5頁(yè)
已閱讀5頁(yè),還剩47頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

摘要隨著計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)的發(fā)展,近年來,新的編程語(yǔ)言層出不窮,python語(yǔ)言就是近些年來最為火爆的一門語(yǔ)言,python語(yǔ)言,相對(duì)于其他高級(jí)語(yǔ)言而言,python有著更加便捷實(shí)用的模塊以及庫(kù),具有語(yǔ)法簡(jiǎn)單,語(yǔ)句清晰的特點(diǎn),使得它在代碼的編程中,變得更加簡(jiǎn)潔容易上手,另外,python應(yīng)用特別廣泛,作為是一門應(yīng)用性廣泛的語(yǔ)言,無論是游戲的開發(fā),還是數(shù)據(jù)的爬取,再到網(wǎng)站的搭建,python都能輕松駕馭,其中,爬蟲的應(yīng)用,更加使得python這門語(yǔ)言為人所知。作為網(wǎng)絡(luò)搜索引擎的組成成分之一,爬蟲能夠有效的為我們搜索和爬取有用的信息,減少人工的操作,十分方便,在自己定義的條件下,采集得到某些網(wǎng)頁(yè)的信息,比如房?jī)r(jià)、股票、招聘信息等,對(duì)于這些信息,我們可以對(duì)數(shù)據(jù)進(jìn)行處理,從而得到我們所需要的信息。本文通過python實(shí)現(xiàn)了一個(gè)馬蜂窩旅游網(wǎng)站的爬蟲信息搜集,并對(duì)馬蜂窩網(wǎng)站中采集得到的數(shù)據(jù)進(jìn)行分析處理,得到想要的數(shù)據(jù)。關(guān)鍵詞:PythonHtml爬蟲旅游馬蜂窩AbstractWiththedevelopmentofcomputernetworktechnology,inrecentyears,newprogramminglanguageshaveemergedendlessly.Pythonisthemostpopularlanguageinrecentyears.Pythonhasmoreconvenientandpracticalmodulesandlibrariesthanotherhigh-levellanguages.,Hasthecharacteristicsofsimplesyntaxandclearstatements,whichmakesitmoreconciseandeasytouseintheprogrammingofcode.Inaddition,Pythonisparticularlywidelyusedasaversatilelanguage,fromwebsiteconstructiontodataprocessingtogadgets.Thedesignofsmallgamescanbedonebypython.Amongthem,theapplicationofreptilesmakespythonalanguagemoreknown.Webcrawlerscannotonlycollectnetworkinformationforsearchengines,butalsoactasadirectionalinformationcollector.Undercertainconditions,theycancollectinformationaboutcertainwebpages,suchashouseprices,stocks,andrecruitmentinformation.Fortheseinformation,wecananalyzethedataProcessittogettheinformationweneed.Thisarticleistoimplementacrawler'sinformationcollectionandanalyzethedatacollectedbypythontogetthedesireddata.Keywords:PythonHtmlreptiletourismMafenwo目錄第一章 引言 61.1 背景 61.2 國(guó)內(nèi)外研究情況 6第二章 爬蟲語(yǔ)言以及工具的介紹 82.1 Python介紹 82.1.1 Python語(yǔ)言的產(chǎn)生以及發(fā)展 82.1.2 Python語(yǔ)言的特色 82.1.3 Python語(yǔ)言的缺點(diǎn) 92.2 URL介紹 92.2.1 URL的定義 92.2.2 URL的解讀 92.3 HTML介紹 102.3.1 HTML的定義 102.3.2 爬蟲與HTML 102.4 爬蟲工具介紹 112.4.1 Chrome 112.4.2 Pycharm 11第三章 項(xiàng)目的需求以及設(shè)計(jì)分析 133.1 項(xiàng)目的需求 133.2 項(xiàng)目的任務(wù) 133.3 設(shè)計(jì)分析 133.3.1 城市編號(hào)的獲取 133.3.2 城市信息的爬取 133.3.3 爬取信息的處理 14第四章 項(xiàng)目的實(shí)現(xiàn) 154.1 城市編號(hào)獲取的實(shí)現(xiàn) 154.1.1 城市編號(hào)獲取使用庫(kù)的介紹 154.1.2 城市編號(hào)獲取過程 164.2 城市信息獲取的實(shí)現(xiàn) 224.2.1 城市信息獲取使用庫(kù)的介紹 224.2.2 城市信息獲取過程 234.3 數(shù)據(jù)可視化處理 314.3.1 數(shù)據(jù)可視化處理所使用的庫(kù) 314.3.2 柱狀圖數(shù)據(jù)可視化代碼實(shí)現(xiàn) 314.3.3 餅狀圖可視化代碼實(shí)現(xiàn) 324.3.4 熱力圖數(shù)據(jù)可視化代碼實(shí)現(xiàn) 334.4 可視化圖片展示 33第五章 不足之處 39第六章 期望與總結(jié) 40參考文獻(xiàn) 41致謝 42引言背景隨著近些年來網(wǎng)絡(luò)的快速發(fā)展,網(wǎng)絡(luò)進(jìn)入了大信息時(shí)代,網(wǎng)絡(luò)上的信息呈現(xiàn)爆炸式的飛漲,五花八門的信息顯示,這使得人們?cè)诰W(wǎng)絡(luò)上尋找自己所需要的信息時(shí),顯得越來越困難,當(dāng)然,一個(gè)問題的出現(xiàn),必然有一個(gè)方法去對(duì)應(yīng),信息的劇增,與之對(duì)應(yīng)的,便是搜索引擎的出現(xiàn),比如google、百度等等,搜索引擎通過搜集網(wǎng)絡(luò)上數(shù)以萬(wàn)計(jì)的不同類型的網(wǎng)頁(yè)信息,并為其建立起索引,通過搜索引擎,即使網(wǎng)絡(luò)上的信息種類繁多,我們還是能夠通過關(guān)鍵詞的搜索,搜索得出與之對(duì)應(yīng)的信息的網(wǎng)頁(yè)。網(wǎng)絡(luò)爬蟲是一個(gè)自動(dòng)化的程序,也是搜索引擎的組成部分之一,不同的搜索引擎,可以通過不同的搜索需求,選擇合適的爬蟲方法來搜集網(wǎng)絡(luò)上的信息,傳統(tǒng)網(wǎng)絡(luò)爬蟲主要從一個(gè)url開始,通過爬取目標(biāo)網(wǎng)頁(yè)的url,觀察其組成結(jié)構(gòu)特點(diǎn),按照結(jié)構(gòu)規(guī)律,構(gòu)建新的url,不停的將新的url放入隊(duì)列中,循環(huán)爬取,最后直到需求完成為止。優(yōu)秀、高效的爬蟲程序,能夠使人們網(wǎng)絡(luò)上找到更加精準(zhǔn)的信息。本文通過python語(yǔ)言,實(shí)現(xiàn)了一個(gè)對(duì)于馬蜂窩旅游網(wǎng)站的信息采集分析,通過對(duì)馬蜂窩旅游城市的城市編號(hào)爬取,根據(jù)馬蜂窩網(wǎng)站的網(wǎng)址規(guī)則,通過拼接得到馬蜂窩旅游網(wǎng)站的城市url,根據(jù)獲取得到的url,進(jìn)入馬蜂窩旅游城市頁(yè)面,觀察頁(yè)面組成結(jié)構(gòu),通過標(biāo)簽定位,爬取我們所需要的頁(yè)面信息,將其保存入本地文件,再對(duì)文件里面的數(shù)據(jù)進(jìn)行數(shù)據(jù)處理,可視化分析,告訴你旅游去哪兒好。國(guó)內(nèi)外研究情況python作為搜索引擎技術(shù)組成部分之一,自九十年代初誕生了第一個(gè)網(wǎng)絡(luò)爬蟲以來,python技術(shù)已經(jīng)經(jīng)過了20多年的發(fā)展,經(jīng)過這么多年的發(fā)展,python技術(shù)也趨于成熟,逐漸覆蓋了網(wǎng)頁(yè)開發(fā)、游戲開發(fā)、爬蟲分析可視化、腳本開發(fā)等等專業(yè)領(lǐng)域,并通過其簡(jiǎn)單易懂、代碼編寫效率高的特點(diǎn),成為目前最為火熱的開發(fā)編程語(yǔ)言,也正是其應(yīng)用廣泛,上手容易,語(yǔ)法強(qiáng)大,代碼可讀性強(qiáng)的特點(diǎn),受到了很多人的喜愛,讓很多人愛不釋手。同時(shí),由于不同的人對(duì)于數(shù)據(jù)爬取內(nèi)容的差異,常常會(huì)產(chǎn)生不同的需求,因此爬蟲主要可以分為以下兩種:通用爬蟲:通用爬蟲其實(shí)很簡(jiǎn)單,它的作用就是將網(wǎng)絡(luò)上的網(wǎng)頁(yè)下載下來,保存到本地,其實(shí)就是生成一個(gè)副本,作為網(wǎng)頁(yè)的備份。所以通用搜索一般得到的都是網(wǎng)頁(yè),對(duì)于用戶來說,網(wǎng)頁(yè)的內(nèi)容十之八九都是沒用的,要的只是網(wǎng)頁(yè)中的某些特定的信息。所以就有了我們第二種爬蟲方法。聚焦爬蟲:聚焦爬蟲是比通用爬蟲更加復(fù)雜一點(diǎn),它不同與通用爬蟲,通用爬蟲是將網(wǎng)頁(yè)保存到本地,但是聚焦爬蟲,它不會(huì)將整個(gè)網(wǎng)頁(yè)爬取下來,它會(huì)篩選得到網(wǎng)頁(yè)中我我們所需要的東西,而篩選的條件規(guī)則是由我們自己定義的,相比通用爬蟲,聚焦爬蟲它做的工作更多,但是得到的數(shù)據(jù)更加符合我們的要求,本文所實(shí)現(xiàn)的爬蟲,就是通過聚焦爬蟲所實(shí)現(xiàn)的。爬蟲語(yǔ)言以及工具的介紹Python介紹Python語(yǔ)言的產(chǎn)生以及發(fā)展Python是上世紀(jì)八十年代末開始由Guido開發(fā),九十年代初發(fā)行的一門編程語(yǔ)言,其作者參與過ABC語(yǔ)言的開發(fā),所以對(duì)ABC語(yǔ)言其中的弊端有所了解,認(rèn)為ABC語(yǔ)言雖然語(yǔ)言優(yōu)美,功能強(qiáng)大,但是卻受限于它的非開發(fā)性,沒有得到廣泛的應(yīng)用,因此想開發(fā)出一門新的語(yǔ)言,能夠摒棄掉ABC語(yǔ)言的弊端,打破這個(gè)限制,正是如此,python就誕生了,python剛剛推出不久,就迅速得到了各行人士的青睞,經(jīng)過多年以來的不斷改善,python語(yǔ)言已經(jīng)逐漸穩(wěn)固它在編程語(yǔ)言中的地位。根據(jù)從TIOBE網(wǎng)站上得到的數(shù)據(jù),從2002年開始,python語(yǔ)言就趨于一個(gè)穩(wěn)定上升的狀態(tài),呈線性增長(zhǎng),正是如此,python成為了近年來最受歡迎的編程語(yǔ)言之一。圖2.1.1計(jì)算機(jī)編程語(yǔ)言熱門排行榜Python語(yǔ)言的特色首先,Python是一門強(qiáng)大、靈活的語(yǔ)言,與C、C++、Java等語(yǔ)言相比較,python的語(yǔ)法簡(jiǎn)單優(yōu)雅,往往不用通過很復(fù)雜的代碼,就能實(shí)現(xiàn)強(qiáng)大的功能,例如Java需要100行代碼才能實(shí)現(xiàn)的功能,python往往只需要一半或者更加少,大幅度降低了學(xué)習(xí)與使用的難度,很適合人們的學(xué)習(xí)。其次,python是一門開源免費(fèi)的語(yǔ)言,簡(jiǎn)單的來說,就是不花錢就能使用,我們可以直接下載安裝運(yùn)行,也能對(duì)其源碼進(jìn)行修改,十分便捷。再次,效率極高,python被稱為膠水語(yǔ)言,擁有強(qiáng)大的第三方庫(kù),人們往往只需要將庫(kù)下載調(diào)用,在庫(kù)的基礎(chǔ)上進(jìn)行開發(fā),就可以實(shí)現(xiàn)很多復(fù)雜的功能,節(jié)省了不少時(shí)間,避免了重復(fù)造輪子的現(xiàn)象。最后,python語(yǔ)言可移植性強(qiáng),正是由于python的開源性,使得python擁有了良好的可移植性性能,讓其可以被移植到其他的平臺(tái)之下,例如我們所熟知的window系統(tǒng),Linux系統(tǒng),安卓系統(tǒng)和蘋果系統(tǒng)等等。總而言之,python是一門用途廣泛,又容易上手的編程語(yǔ)言。Python語(yǔ)言的缺點(diǎn)Python雖然擁有眾多的優(yōu)點(diǎn),但是事物往往很難做到十全十美,編程語(yǔ)言也一樣,python雖然簡(jiǎn)單優(yōu)美,但是運(yùn)行速度相比其他編程語(yǔ)言來說,卻顯得緩慢,對(duì)比C語(yǔ)言來說,C語(yǔ)言是先編譯后運(yùn)行的,編譯的時(shí)候就已經(jīng)將代碼轉(zhuǎn)化成了CPU所能執(zhí)行的機(jī)器碼,而python是解釋性語(yǔ)言,因此它的代碼在運(yùn)行的過程中,需要先將代碼編譯成CPU所能理解的機(jī)器碼,這個(gè)過程就需要耗費(fèi)很多時(shí)間,導(dǎo)致了python的運(yùn)行緩慢。另外,由于python的開源性,導(dǎo)致了python代碼無法加密,實(shí)際上,如果我們要發(fā)布一個(gè)python程序,其實(shí)就需要將我們所敲打的源碼發(fā)布出去,這樣別人就直接得到了你的源碼,能夠輕易的使用并修改你的源碼,而C語(yǔ)言是先編譯后運(yùn)行的,它的發(fā)布是發(fā)布已經(jīng)編譯后的機(jī)器碼,別人是很難逆推得到源碼的,其實(shí),基本所有的編譯性語(yǔ)言,都不需要擔(dān)心源碼的泄露,而像python這種解釋性的語(yǔ)言就比較難了,因此在保密度這一塊,python還是略顯劣勢(shì)。URL介紹URL的定義URL,通俗的來講的話,URL其實(shí)就是網(wǎng)絡(luò)地址,每一個(gè)URL,就代表著特定的資源在網(wǎng)絡(luò)或者電腦上的位置,這個(gè)位置既可以是電腦的本地磁盤路徑,也可以是局域網(wǎng)上的某個(gè)計(jì)算機(jī),但是,總的來說,URL更多的是指網(wǎng)絡(luò)上的網(wǎng)頁(yè)站點(diǎn)。而這里所說的特定的資源,可以是一個(gè)HTML界面、也可以是一張照片、一個(gè)文本、或者是一個(gè)文件等等。URL的解讀URL是由不同的組件組成的,就拿本文所要爬取的網(wǎng)站馬蜂窩來說,馬蜂窩的網(wǎng)站地址為:/mdd/,這個(gè)網(wǎng)站就相當(dāng)于一個(gè)URL,我們可以這樣解釋它:(1)這是一個(gè)https協(xié)議的網(wǎng)站,它告訴了瀏覽器訪問資源的時(shí)候,應(yīng)當(dāng)使用https協(xié)議,在目前,網(wǎng)絡(luò)上使用的協(xié)議大多為HTTP或者h(yuǎn)ttps(加密)。(2),是域名,指向你所要訪問的資源的服務(wù)器端,這里也可以使用IP地址顯示。(3)mdd,這里表示的是訪問資源在該服務(wù)器上的路徑,但是有時(shí)這個(gè)路徑會(huì)出錯(cuò),最常見的問題就是該路徑的資源已經(jīng)被移走或者不存在,導(dǎo)致尋找失敗。HTML介紹HTML的定義HTML,是一種超文本鏈接標(biāo)示語(yǔ)言,是網(wǎng)站搭建的基本骨架,簡(jiǎn)單的來說,HTML就是網(wǎng)頁(yè)的載體,它主要由兩部分組成,一個(gè)是head,另一個(gè)是body,head是描述瀏覽器的主要信息,body是用來裝載網(wǎng)頁(yè)界面的主體內(nèi)容,網(wǎng)頁(yè)上所看到的文字信息或者圖案,都是存在body里面,在HTML界面中,存在著超級(jí)鏈接,所謂的超級(jí)鏈接,其實(shí)就是將URL地址放入了界面中,人們可以通過鼠標(biāo)的點(diǎn)擊,可以使瀏覽器對(duì)其進(jìn)行解析,并能夠快速便捷的跳轉(zhuǎn)到URL指定的資源界面,正是如此便捷的操作,使得HTML受到了很多編程人士的喜愛,也是它成為應(yīng)用廣泛的原因之一。爬蟲與HTML本文之所以介紹HTML界面,其實(shí)是和我們爬蟲的設(shè)計(jì)有一定的關(guān)聯(lián),在HTML中,為了方便的網(wǎng)頁(yè)內(nèi)容的處理,在HTML加入了標(biāo)簽這種東西,標(biāo)簽是由<>組成,其中分為起始標(biāo)簽和結(jié)束標(biāo)簽,結(jié)束標(biāo)簽在<>的基礎(chǔ)上,加多一個(gè)/,即</>,而<>中的內(nèi)容,則是根據(jù)自己所要編寫的內(nèi)容決定,例如我們想要定義一個(gè)標(biāo)題,則需要這么寫:<title>,類似的例子還有很多,具體要思考我們標(biāo)簽是要干什么再來決定。在我們的爬蟲中,我們就是需要根據(jù)這些標(biāo)簽的位置,來爬取我們所需要的信息,根據(jù)標(biāo)簽的定位,觀察標(biāo)簽地位的規(guī)則,獲取需求標(biāo)簽位置下的內(nèi)容,通過字符分割或者直接爬取的方式,將其內(nèi)容中有用的信息存儲(chǔ)下來,達(dá)到我們爬取的目的。圖2.3.2HTML下的標(biāo)簽爬蟲工具介紹Chrome本文進(jìn)行爬蟲的瀏覽器選擇的是chrome瀏覽器,之所選擇chrome瀏覽器,首先,chrome瀏覽器的界面簡(jiǎn)介,在所有瀏覽器中,chrome瀏覽器算是性能最好的瀏覽器,其次,chrome瀏覽器全面支持HTML,這對(duì)于我們之后的爬蟲有良好的幫助,在兼容性方面,chrome瀏覽器的兼容性問題很好,使用過程會(huì)給人一種良好的體驗(yàn),另外,爬蟲所使用的selenium庫(kù),與其他瀏覽器的驅(qū)動(dòng)存在一定的bug,導(dǎo)致某些功能無法實(shí)現(xiàn)從而出錯(cuò),我們?cè)谑褂胹elenium時(shí),需要在chrome瀏覽器對(duì)應(yīng)的版本下載安裝Chromedriver驅(qū)動(dòng)程序,并放入python文件下,便于我們之后的調(diào)用,最后,chrome瀏覽器推出了headless模式,即無界面瀏覽模式,在沒有瀏覽器界面的情況下,依舊能實(shí)現(xiàn)與有瀏覽器界面相同的操作,這對(duì)于我們爬蟲抓取來說,是一個(gè)十分便捷的功能,但是在本文中,為了更加直觀的表現(xiàn)出爬蟲過程,我并沒有把無界面瀏覽的代碼寫上去。Pycharm我們?cè)谧鲆患虑榈臅r(shí)候,既要有一定的頭腦,也需要趁手的工具,才能有更好的效率,編程也是如此,雖然python安裝后有自帶的編輯器IDLE,但是對(duì)于我們來說,IDLE對(duì)于大多數(shù)新手乃至學(xué)習(xí)過程中的人們并不太友好,沒有提示,沒有補(bǔ)全,只有最后的運(yùn)行結(jié)果或者報(bào)錯(cuò),這對(duì)于大多數(shù)人來說,是一種很難受的體驗(yàn),大大的降低了人們學(xué)習(xí)過程中的效率和導(dǎo)致了寶貴時(shí)間的流逝。所以說,只有選對(duì)了正確的工具,才能使工作的效率以及代碼的質(zhì)量得到提升,在本文的爬蟲過程中,選擇的工具是Pycharm,Pycharm是python的一種IDE,能夠幫助人們?cè)谶M(jìn)行python語(yǔ)言編寫的過程中,節(jié)省時(shí)間,提高生產(chǎn)效率,提高代碼的質(zhì)量,在使用的過程中,如果出現(xiàn)一些語(yǔ)法錯(cuò)誤或者拼錯(cuò)代碼,Pycharm能夠?qū)崿F(xiàn)實(shí)時(shí)監(jiān)測(cè),一旦發(fā)現(xiàn)錯(cuò)誤,將會(huì)有明顯的下劃線報(bào)紅提示,能夠使人第一時(shí)間發(fā)現(xiàn)錯(cuò)誤,修改代碼。另外,Pycharm的補(bǔ)全功能也十分便捷,一行代碼在編寫的過程中,并不需要全部敲打,只需要有首字符提示,便能顯示出與之對(duì)應(yīng)的代碼語(yǔ)言,十分的節(jié)約時(shí)間。在程序運(yùn)行出錯(cuò)的同時(shí),會(huì)顯示語(yǔ)句出錯(cuò)的地方,鼠標(biāo)點(diǎn)擊對(duì)應(yīng)的出錯(cuò)點(diǎn),就能實(shí)現(xiàn)智能跳轉(zhuǎn)。對(duì)于文件的管理來說,Pycharm也是優(yōu)于IDLE,代碼文件直接就在文件夾下,可以有多種不同的代碼文件夾存在,需要哪些代碼文件,很方便直接點(diǎn)擊就能打開。最后,Pycharm的debug檢查,有時(shí)候會(huì)遇到代碼不報(bào)錯(cuò),但是卻得不到自己想要的數(shù)據(jù),這個(gè)時(shí)候,debug檢測(cè)就派上大用場(chǎng)了,使用debug功能,能夠看到代碼的執(zhí)行過程,從細(xì)節(jié)上找到代碼陷入錯(cuò)誤的地方,是一個(gè)很好用的功能。所以,本文的爬蟲爬取信息所使用的工具就是Pycharm。項(xiàng)目的需求以及設(shè)計(jì)分析項(xiàng)目的需求如今,人們的生活質(zhì)量越來越好,水平條件越來越高,也使得更多的人注意到身心的放松與娛樂,很多人在自己閑暇的時(shí)候,都希望能度過一個(gè)好的時(shí)光,正因?yàn)槿绱?,旅游行業(yè)逐漸火熱了起來,漸漸的進(jìn)入到了人們的生活之中,但是很多人在選擇旅游的時(shí)候卻不知所措,因?yàn)樗麄儾恢廊ツ睦锿婧?,有什么好玩的,有什么好吃的,所以,本文設(shè)計(jì)了一次爬蟲,爬取馬蜂窩旅游網(wǎng)站的旅游信息,將信息數(shù)據(jù)進(jìn)行分析,篩選出馬蜂窩旅游網(wǎng)站的熱門城市、熱門城市景點(diǎn)、熱門小吃等等的數(shù)據(jù)信息,讓人們得以在眾多的旅游城市選擇中,找到那些熱門景點(diǎn)以及熱門的小吃,少走彎路,找到一個(gè)最適合自己旅游的城市,擁有一個(gè)愉悅快樂的假期旅游。項(xiàng)目的任務(wù)首先,旅游,我們需要先確定下來一個(gè)城市,因此,我們?nèi)蝿?wù)要求第一件就是馬蜂窩旅游城市中排行前10的熱門城市各自為什么,其次,我們需要得到各個(gè)城市的景點(diǎn)數(shù)據(jù),根據(jù)數(shù)據(jù)分析得出排行前15的熱門景點(diǎn)為哪些,最后,爬取與美食相關(guān)的信息,得出旅游中最具代表性的美食前15的排行。設(shè)計(jì)分析城市編號(hào)的獲取首先,我們爬取旅游信息,肯定是爬取眾多城市的旅游信息,不同的城市在馬蜂窩旅游網(wǎng)站中的URL是不同的,但是,通過對(duì)比我們可以發(fā)現(xiàn),在馬蜂窩旅游網(wǎng)站中,所有的城市以及城市景點(diǎn)信息,都是由特定的五位數(shù)字或者六位數(shù)字組成的,這對(duì)于我們爬取不同城市的旅游信息是一個(gè)突破口,根據(jù)這個(gè)數(shù)字,我們就能拼接得到不同城市的不同URL地址,得到城市旅游的界面。城市信息的爬取在獲取得到城市編號(hào)后,我們就能得到馬蜂窩旅游網(wǎng)站的城市的URL地址,通過地址我們就可以進(jìn)入到城市旅游的界面,這個(gè)時(shí)候我們就需要考慮,我們應(yīng)該爬取什么,抓取哪些信息,哪些信息是有用的,能夠支持我們爬取信息后數(shù)據(jù)分析的可信度,在這里,我們是根據(jù)馬蜂窩旅游網(wǎng)站里面不同城市的游記的數(shù)量、印象的標(biāo)簽數(shù)、特色美食的排行、購(gòu)物娛樂的排行等等來得出的信息。爬取信息的處理在我們得到城市的具體旅游信息后,最后就是數(shù)據(jù)的可視化處理,首先,我需要將馬蜂窩旅游網(wǎng)站中游記前10的熱門城市、前15的景點(diǎn)標(biāo)簽類熱門城市、前15的的餐飲標(biāo)簽熱門城市、前15的娛樂購(gòu)物標(biāo)簽類熱門城市可視化處理,采用柱狀圖顯示。接著,我們對(duì)景點(diǎn)人氣前15的城市景點(diǎn)、餐飲人氣前15的城市美食、娛樂購(gòu)物人氣前15的城市娛樂可視化處理,采用的也是柱狀圖顯示。最后,我們對(duì)熱門城市前20的熱門城市進(jìn)行熱力圖顯示,這就是全部的信息處理可視化了。圖3.3程序流程圖項(xiàng)目的實(shí)現(xiàn)城市編號(hào)獲取的實(shí)現(xiàn)城市編號(hào)獲取使用庫(kù)的介紹os庫(kù),python里面os庫(kù)是用來處理各種文件和目錄的,在os庫(kù)里面,python提供了很多種方法,例如,access(path,mode),用于文件的權(quán)限檢查,path是指文件路徑,mode則擁有四個(gè)參數(shù),可以分別檢測(cè)出path路徑下的文件是否存在,是否可讀,是否可寫,是否可執(zhí)行。與之對(duì)應(yīng)的,chmod(path,mode),則是用于文件的權(quán)限修改。Remove方法,則是用來刪除path路徑下的文件,os庫(kù)的方法還有很多,這里就不一一舉例出來了,os庫(kù)其實(shí)就是python對(duì)于我們操作系統(tǒng)功能的一個(gè)普通操作,本文這里我們使用到的os庫(kù)里,是調(diào)用了一個(gè)os.chdir(path),用來改變文件路徑,使得我們爬蟲保存下來的數(shù)據(jù)文件能夠存儲(chǔ)到指定的位置。urllib庫(kù),python里面urllib庫(kù)十分的便捷,它為我們提供了一系列的URL操作,這里要說明的一下就是,以前的python版本中,urllib與urllib2是分開來的,換句話說,urllib2是urllib的升級(jí)版,不過這兩個(gè)又互相存在著不同點(diǎn),它們所包含的函數(shù)有些是不互通,所以在python2.x中,它們是混合搭配使用的,無法相互替代的,但是在python3.x后,urllib2是合并到了urllib中,這里我們安裝的python是3.x的,所以我們直接使用的就是urllib,在urllib模塊中,我們需要的用到的就是方法是request,request可以幫助我們抓取URL下的內(nèi)容,是最基礎(chǔ)的HTTP請(qǐng)求模塊,它也可以為我們爬蟲實(shí)現(xiàn)一個(gè)偽裝操作,我們可以通過添加Headers,將我們的操作偽裝成一個(gè)瀏覽器,模擬我們?nèi)藶榈牟僮?,類似于我們平常上網(wǎng)的操作,輸入網(wǎng)址點(diǎn)擊跳轉(zhuǎn),就能跳轉(zhuǎn)到我們所需要訪問的網(wǎng)頁(yè)的步驟是相同的。BeautifulSoup4庫(kù),BeautifulSoup4是我們爬蟲所經(jīng)常使用的一個(gè)庫(kù)之一,在HTML界面中,數(shù)據(jù)的位置是有一定的規(guī)則和結(jié)構(gòu)的,BeautifulSoup4就是一個(gè)可以根據(jù)HTML頁(yè)面結(jié)構(gòu)抓取我們所需要的數(shù)據(jù)的庫(kù)之一,類似像BeautifulSoup4還有l(wèi)xml和pyquery等等,這里使用BeautifulSoup4是因?yàn)锽eautifulSoup4簡(jiǎn)單容易上手,而且它的文檔容錯(cuò)率較高,對(duì)于我們這種數(shù)據(jù)抓取保存還是比較合適的,BeautifulSoup4使用soup可以直接獲取得到節(jié)點(diǎn)的元素或者名稱,但是在同級(jí)中有多個(gè)相同節(jié)點(diǎn)的時(shí)候,soup只會(huì)選擇第一個(gè),我們所爬取的內(nèi)容很多都是同一節(jié)點(diǎn)下多個(gè)元素的數(shù)據(jù),所以這里使用BeautifulSoup4里面的函數(shù)最多的就是find_all()與find(),find_all(name,attrs,recursive,text,**kwargs)能幫助我們查找符合括號(hào)中條件的所有元素中的參數(shù),name所指的是命名為name的所有標(biāo)簽,attrs表示屬性,例如id、title、class等等,這里的class由于是python的專有詞,所以使用的時(shí)候,需要特殊處理下,我們只需要對(duì)其后面加下劃線,就能解決,即class_,find()和find_all()使用差不多,但是使用find匹配的是第一個(gè)元素,有時(shí)候我們需要的是某一個(gè)元素下面下屬的多個(gè)元素,所以這里我們有時(shí)候會(huì)使用到find()與find_all()的混合使用抓取所需要的元素下的數(shù)據(jù)。Pandas庫(kù),pandas庫(kù)是python中的一個(gè)科學(xué)計(jì)算庫(kù),它可以說是基于Numpy庫(kù)的一個(gè)工具,這里的Numpy后面也會(huì)用到,他們最大的區(qū)別在于,Numpy是用于數(shù)值計(jì)算的,它是一個(gè)多維數(shù)組的容器,而pandas庫(kù)更多的是用來做數(shù)據(jù)處理的,可以說是為了解決數(shù)據(jù)分析任務(wù)而衍生出來的一個(gè)工具,同時(shí)它也算是一個(gè)表格容器,pandas可以對(duì)數(shù)據(jù)進(jìn)行導(dǎo)入、處理、輸出、統(tǒng)計(jì)等等一系列的操作,能夠?qū)?shù)據(jù)進(jìn)行一個(gè)有序的整理,這里pandas庫(kù),首先我們使用到的是它的DataFrame,由于我們爬取的數(shù)據(jù)很多,如何將這些數(shù)據(jù)進(jìn)行處理保存,這是一個(gè)問題,我們這里使用的是pd.DataFrame(),用于建立一個(gè)二維數(shù)組對(duì)象,再將數(shù)據(jù)放置進(jìn)去這個(gè)對(duì)象里面,其次,有了數(shù)據(jù)之后,不同數(shù)據(jù)是在不同的地方爬取下來的,我們就需要對(duì)某些數(shù)據(jù)進(jìn)行合并才能顯示出效果來,這里我們就需要用到pd.concat()方法,可以對(duì)多個(gè)DataFrame對(duì)象進(jìn)行合并,concat方法里有多個(gè)參數(shù)需要我們選擇,具體怎么做要看我們需要什么,最后,pandas也為我們提供了文件數(shù)據(jù)的讀取功能,我們第一步是將馬蜂窩各個(gè)城市的專屬數(shù)字爬取下來保存成一個(gè)Excel文件,后面第二部分會(huì)調(diào)用到這些數(shù)據(jù),所以pandas的read功能就很好的解決了我們這個(gè)問題,通過pd.read_excle(),我們就能很好的打開excel文件,從而從中拿取我們所需要的數(shù)據(jù)。Selenium庫(kù),Selenium用于網(wǎng)站的自動(dòng)化測(cè)試,它適用于當(dāng)前很多的主流瀏覽器,它的作用是用于模擬我們對(duì)瀏覽器的操作,如點(diǎn)擊、下滑、跳轉(zhuǎn)等等,同時(shí),我們還需要下載對(duì)應(yīng)的瀏覽器驅(qū)動(dòng)來配合Selenium操作,實(shí)現(xiàn)操作目的。城市編號(hào)獲取過程首先,我們進(jìn)入馬蜂窩網(wǎng)站,我們需要爬取的是國(guó)內(nèi)旅游信息,總所周知,中國(guó)的地區(qū)模塊是由省份以及直轄市組成,我們可以在馬蜂窩熱門目的地國(guó)內(nèi)省份開始尋找有用的信息。按F12打開開發(fā)者工具后,我們將箭頭點(diǎn)擊頁(yè)面中的省份名稱,開發(fā)者工具就會(huì)直接定位跳轉(zhuǎn)到箭頭點(diǎn)擊位置的當(dāng)前頁(yè)面標(biāo)簽下。圖省份URL抓取通過圖片中我們可以看到,省份的URL信息是放置在一個(gè)屬性為<divclass=“hot-listclearfix”>下的dt標(biāo)簽里a標(biāo)簽里面,所以我們需要做的就是,定位到<divclass=“hot-listclearfix”>標(biāo)簽下,尋找所有dt標(biāo)簽,將dt標(biāo)簽里面的a標(biāo)簽的href屬性內(nèi)容抓取下來,這就是我們爬取馬蜂窩城市URL的第一步,抓取省份URL。圖省份URL抓取代碼實(shí)現(xiàn)在Python里,python為我們提供了很多的函數(shù),這些函數(shù)是python內(nèi)部以及包裝好了的,使用起來非常方便,同樣,我們也可以自己在python中寫自己的函數(shù),這樣是為了方便在其他地方使用同樣的代碼時(shí),不需要重新寫一邊,而是只要調(diào)用這個(gè)函數(shù)就能實(shí)現(xiàn),減少了代碼累贅。這里我們將獲取省份URL地址的代碼寫進(jìn)了一個(gè)名為find_cat_url函數(shù)里,首先,很多網(wǎng)站是不允許爬蟲爬取數(shù)據(jù)的,這樣會(huì)給網(wǎng)站額外增加運(yùn)行負(fù)擔(dān),所以為了不被網(wǎng)站發(fā)覺我們是爬蟲,一般都會(huì)用表頭偽裝成瀏覽器,就像代碼截圖中一樣,在find_cat_url函數(shù)中,我們首先使用了一個(gè)表頭偽裝成火狐瀏覽器,假裝是認(rèn)為瀏覽網(wǎng)站信息,而不是爬蟲,其次,我們使用了request方法,向馬蜂窩網(wǎng)站發(fā)送請(qǐng)求,得到響應(yīng)后,我們使用beautifulsoup庫(kù)的html.parser解析器進(jìn)行解析,按照屬性和標(biāo)簽名找到我們所需要找到的省份數(shù)據(jù),所以這里我們使用find()方法,找到屬性為“class”:“hot-listclearfix”的標(biāo)簽,在這個(gè)標(biāo)簽下,使用find_all()方法,找到當(dāng)前標(biāo)簽下的所有dt標(biāo)簽,新建兩個(gè)數(shù)組,命名為cat_url和cat_name,cat_url用來放置省份的URL,而cat_name用來放置省份的名稱,這里使用了一個(gè)for循環(huán)來爬取數(shù)據(jù),for循環(huán)的長(zhǎng)度為dt標(biāo)簽的長(zhǎng)度,畢竟我們數(shù)據(jù)的多少就取決于dt標(biāo)簽里多少個(gè)省份,for循環(huán)遍歷所有的省份,根據(jù)我們之前的截圖,我們可以知道省份的信息是放置在dt標(biāo)簽下的a標(biāo)簽中,所以我們遍歷所有的a標(biāo)簽,將a標(biāo)簽中的屬性為href的信息添加到cat_url中,將a標(biāo)簽的文本信息添加到cat_name中,將cat_url返還,這樣我們就得到了馬蜂窩網(wǎng)站的省份url地址。接著,得到省份的URL地址后,我們進(jìn)入到馬蜂窩省份界面,查看界面源代碼,查找下如何抓取省份下城市URL。圖省份城市界面分析進(jìn)入到省份界面后,這里以云南省為例,我們可以發(fā)現(xiàn),城市的信息是位于網(wǎng)頁(yè)界面的目的地下的熱門城市里。圖省份URL分析進(jìn)入到省份熱門城市里后,我們會(huì)發(fā)現(xiàn),省份的URL和我們之前爬取的的URL有所不同,之前的URL里的部分組成為travel-scenic-spot/mafengwo,但是進(jìn)入省份熱門城市界面后,URL組成部分變?yōu)榱薽dd/citylist,不過其他組成部分還是一樣的,所以這里我們需要對(duì)之前爬取的省份URL進(jìn)行處理,將travel-scenic-spot/mafengwo替換成mdd/citylist/。圖城市URL分析抓取進(jìn)入省份熱門城市后,通過開發(fā)者工具我們可以發(fā)現(xiàn),例如我們打開云南的麗江看看,標(biāo)簽中已經(jīng)蘊(yùn)含了麗江的跳轉(zhuǎn)鏈接,即為travel-scenic-spot/mafengwo/10186.html,與我們單獨(dú)手動(dòng)打開麗江鏈接對(duì)比可以發(fā)現(xiàn)/travel-scenic-spot/mafengwo/10186.html,a標(biāo)簽中的屬性data-id就是我們所需要爬取的城市URL特定數(shù)字,有了這些數(shù)字,我們只要通過/travel-scenic-spot/mafengwo/data-id.html,就能去到任何馬蜂窩熱門城市界面,所以,這里的屬性data-id下的數(shù)據(jù)就是我們所需要爬取的,同時(shí)還有標(biāo)簽屬性為class=“title”下的文本內(nèi)容,即城市名字是我們所需要爬取的。圖城市URL抓取實(shí)現(xiàn)代碼同樣,我們也是將城市URL抓取的方法用函數(shù)包裝起來,函數(shù)名為find_city_url,這里我們也是新建了兩個(gè)列表,一個(gè)city_name_list,用來保存城市名稱,一個(gè)city_url_list,用來保存城市URL中的特定數(shù)字,首先也是一個(gè)循環(huán)語(yǔ)句,對(duì)url_list進(jìn)行遍歷,這里的url_list其實(shí)是函數(shù)調(diào)用前,已經(jīng)對(duì)find_cat_url函數(shù)中的省份URL傳入到了url_list中,我們這里遍歷后的第一件事就是將第一次爬取下來的省份URL中的travel-scenic-spot/mafengwo全部換為mdd/citylist/,這里使用的是replace進(jìn)行替換,可以將舊字符串替換成新的字符串,再將替換后的URL傳遞給瀏覽器,接著是一個(gè)while循環(huán),還是和之前一樣使用的是beautifulsoup進(jìn)行解析,根據(jù)之前的開發(fā)者工具我們可以看出,我們所需要的屬性data-id,是位于a標(biāo)簽下,在a標(biāo)簽下,所有的a標(biāo)簽都有一個(gè)共同屬性,那就是data-type=“目的地”,所以我們這里使用find_all,找到所有a標(biāo)簽下屬性為data-type=“目的地”的位置,將城市的名稱,即a標(biāo)簽的文本內(nèi)容通過循環(huán)添加到city_name_list中,將屬性data-id的數(shù)據(jù)也通過循環(huán)添加到city_url_list,一個(gè)省份有很多個(gè)城市,所以不可能一頁(yè)就能列出來的,所以這里我們就用到了之前介紹的Selenium,通過Selenium模擬滾動(dòng),我們頁(yè)面向下滾動(dòng)800像素,然后調(diào)用js腳本,通過開發(fā)者工具我們可以得到馬蜂窩網(wǎng)站下一頁(yè)的標(biāo)簽,<arel="nofollow"data="2"href="#"class="pg-next_j_pageitem">后一頁(yè)</a>,所以我們只要找到class為pg-next的地方,模擬點(diǎn)擊就能自動(dòng)翻到下一頁(yè),返回city_name_list和city_url_list,從而實(shí)現(xiàn)整個(gè)省份的城市URL獲取。圖城市URL抓取函數(shù)調(diào)用這部分代碼是函數(shù)的調(diào)用,首先是url地址,為馬蜂窩旅游網(wǎng)站地址,然后調(diào)用find_cat_url函數(shù),將獲取的省份URL傳遞給了url_list,接著調(diào)用了find_city_url函數(shù),將城市名和城市URL通過二維數(shù)組保存,再輸出到excle表中。圖城市URL爬取數(shù)據(jù)這里就是代碼運(yùn)行后所獲取的數(shù)據(jù),由于馬蜂窩網(wǎng)站結(jié)構(gòu)的設(shè)計(jì),我發(fā)現(xiàn)屬于省的城市數(shù)據(jù)能夠爬取得到,但是直轄市因?yàn)闃?biāo)簽位置的不同而無法抓取,由于馬蜂窩旅游網(wǎng)站直轄市數(shù)據(jù)量較小,只有四個(gè),所以這里就直接人為的添加了上去,這里一共爬取了一千八百多條數(shù)據(jù),實(shí)際上中國(guó)并沒有那么多城市,主要是馬蜂窩旅游網(wǎng)站將城市與旅游景點(diǎn)也一塊算進(jìn)熱門城市里面了,所以導(dǎo)致了數(shù)據(jù)的溢出。城市信息獲取的實(shí)現(xiàn)城市信息獲取使用庫(kù)的介紹這里使用的庫(kù)與之前我們城市編號(hào)獲取的部分庫(kù)相同,也使用了request庫(kù),os庫(kù),beautifulsoup4庫(kù)和pandas庫(kù),這里就不再介紹了,這里介紹的是城市編號(hào)獲取代碼部分所沒有使用到的庫(kù)。Numpy庫(kù),前面我們說過,pandas可以說是基于numpy的一個(gè)工具,但是它們運(yùn)用于不同的地方,numpy應(yīng)用于多維數(shù)組的運(yùn)算以及矩陣運(yùn)算,這里我們之所以需要用到numpy庫(kù),是因?yàn)槲覀冃枰獙?duì)數(shù)據(jù)進(jìn)行降維,將多維數(shù)組降為一維,在numpy中,降維有兩種方法,一種是np.flatten(),使用這個(gè)函數(shù),它返回給我們的是降維數(shù)組的一份降維拷貝,即原本的數(shù)組是不會(huì)改變的,但是這里我們對(duì)降維后的數(shù)組是有要求改變的,所以我們這里使用的是第二種方法,就是np.ravel(),使用這個(gè)函數(shù),我們就能對(duì)原數(shù)組進(jìn)行降維。Socket庫(kù),一開始在進(jìn)行爬蟲的時(shí)候,經(jīng)常程序會(huì)卡死不動(dòng)彈,這就對(duì)我們數(shù)據(jù)的爬取造成的一定的影響,畢竟數(shù)據(jù)較為龐大,一旦進(jìn)程卡死,前面所爬取的數(shù)據(jù)就前功盡棄,所以這里我們使用了socket庫(kù)的一個(gè)setdefailttimeout方法,我們可以設(shè)置時(shí)間,當(dāng)HTTP或者Socket獲取時(shí)間超時(shí)時(shí),自動(dòng)跳轉(zhuǎn)到下一次操作,防止爬蟲某個(gè)頁(yè)面的時(shí)候,時(shí)間過長(zhǎng),導(dǎo)致程序卡死,自從使用了socket.setdefailttimeout()后,爬蟲程序在運(yùn)行的過程中沒有出現(xiàn)卡死的情況了。城市信息獲取過程首先,我們需要爬取的是城市的游記數(shù)量多少,來證明馬蜂窩旅游網(wǎng)站哪一座城市是熱門旅游地點(diǎn)。圖游記網(wǎng)站位置這里我們可以看出,游記是位于社區(qū)里面的游記,進(jìn)入之后拉到最下就有游記的總量,我們需要做的就是將這個(gè)總量爬取下來,所以我首先需要知道這個(gè)總量的位置是位于HTML標(biāo)簽?zāi)睦铩D游記標(biāo)簽位置獲取這里我們可以看到,游記的總量是位于屬性為count下的第二個(gè)標(biāo)簽里面,這里標(biāo)簽的位置是從0開始計(jì)算的,所以我們需要獲取的就是下標(biāo)為1的標(biāo)簽數(shù)據(jù)。這是我們爬取分析馬蜂窩熱門旅游城市的數(shù)據(jù)之一。接著,我們要爬取的是城市的印象標(biāo)簽,爬取各種印象標(biāo)簽的總數(shù),來對(duì)一座城市的景點(diǎn)、美食、娛樂購(gòu)物進(jìn)行數(shù)據(jù)爬取。圖印象網(wǎng)站位置我們可以通過馬蜂窩網(wǎng)站的社區(qū)→行程里面得到印象的位置圖印象標(biāo)簽位置獲取以及分析打開開發(fā)者工具我們可以看到,城市印象是位于屬性為class=“m-boxm-tags”標(biāo)簽的a標(biāo)簽里面的em標(biāo)簽里面,所以我們第一步是將em標(biāo)簽里面的文本內(nèi)容爬取下來,這個(gè)時(shí)候我們發(fā)現(xiàn)了一個(gè)問題,就是a標(biāo)簽里面的href屬性有所不同,例如胡同兒的href屬性里面是jd,我們通過首字母可以猜測(cè)得出是景點(diǎn),北京烤鴨的href屬性里面是cy,我們通過首字母可以猜測(cè)得出是餐飲,所以這些城市印象是由不同的成分組成的,所以我們對(duì)這城市印象要進(jìn)行處理,分清楚哪些是jd,哪些是cy,哪些是yl、gw,這里我們打算將娛樂與購(gòu)物合并一塊,如何將這些城市印象區(qū)分開呢,我們可以采用切片的方法,通過對(duì)比我們可以知道,無論是jd還是cy,它們都位于href屬性內(nèi)容的第2、3位,所以我們使用切片的方法,將第2、3位的內(nèi)容切片出來,就能獲得城市印象是由什么構(gòu)成,這里我們打算分成四個(gè)部分,一個(gè)部分是城市的總體印象,將所有印象不分分類全部加起來的總和,第二部分是景點(diǎn)印象,第三部分是餐飲印象,最后的部分是娛樂購(gòu)物印象。在爬取完城市印象之后,出門旅游,到一定回去一些熱門的景點(diǎn)看看,嘗試下當(dāng)?shù)氐拿朗常ベ?gòu)物放松下自己,所以下一步我們就是對(duì)城市的景點(diǎn)、美食以及娛樂購(gòu)物進(jìn)行數(shù)據(jù)爬取,看看哪些景點(diǎn)最熱門,哪些美食最誘人,哪些地方是放松身心的好地方。圖城市熱門美食獲取以及分析這里,我們可以通過馬蜂窩旅游網(wǎng)站的城市餐飲→餐飲,都得城市的美食排行榜,同樣,我們打開開發(fā)者工具,我們可以發(fā)現(xiàn),城市的美食排行榜中,美食名稱數(shù)據(jù)是位于class屬性為list-rank中的h3標(biāo)簽中,而美食熱度是位于class屬性為trend下的文本內(nèi)容,所以這里很簡(jiǎn)單,只需要把所有h3標(biāo)簽的內(nèi)容以及class屬性為trend的美食熱點(diǎn)爬取下來就行。另外,娛樂模塊的排行榜獲取與分析與餐飲基本是一模一樣的,只不過在URL中,娛樂的URL是yl,而餐飲是cy,但是數(shù)據(jù)的位置以及爬取都是一樣的,代碼也基本一致,所以這里就不對(duì)娛樂排行榜進(jìn)行分析了。圖城市熱門景點(diǎn)獲取以及分析這里我們可以看到馬蜂窩城市景點(diǎn)的信息位于景點(diǎn)界面,頁(yè)面包含了城市熱門景點(diǎn)的前五名以及點(diǎn)評(píng),通過開發(fā)者工具我們可以發(fā)現(xiàn),城市的熱門景點(diǎn)信息以及點(diǎn)評(píng)數(shù)是位于class屬性為rowroe-top5下的h3標(biāo)簽里面,所以我們需要將h3標(biāo)簽里面的a標(biāo)簽的文本內(nèi)容爬取下來,這樣我們就能得到城市的景點(diǎn)名稱,接著,我們要爬取的是點(diǎn)評(píng)數(shù),這里點(diǎn)評(píng)數(shù)是位于class屬性為rev-total下的文本內(nèi)容,但是這里我們需要的只是數(shù)字,而不需要文字,所以我們可以將標(biāo)簽中固定有的“條點(diǎn)評(píng)”替換成為空,再將數(shù)據(jù)保存下來,這樣我們就得到了城市熱門景點(diǎn)的數(shù)據(jù)。圖城市標(biāo)簽數(shù)據(jù)以及游記獲取實(shí)現(xiàn)代碼這里代碼實(shí)現(xiàn)的是城市各類印象標(biāo)簽的獲取,這里我們定義了一個(gè)get_city_base函數(shù),首先是url的傳入,通過馬蜂窩旅游網(wǎng)站的行程模塊我們可以很簡(jiǎn)單的發(fā)現(xiàn)出url的規(guī)律,url的規(guī)律是:/xc/'+城市編號(hào)+'/',這里的城市編號(hào)就是我們第一部分所爬取下來的數(shù)據(jù),我們只需要將城市編號(hào)依次放入后,就能打開不同城市的行程界面,在行程界面下,根據(jù)我們之前的分析,使用find方法,找到class屬性為m-tags標(biāo)簽,再找到該標(biāo)簽下class屬性為bd里面的所有a標(biāo)簽以及em標(biāo)簽,定義一個(gè)tag_count列表,將城市的所有em標(biāo)簽的數(shù)據(jù)放進(jìn)去,然后對(duì)a標(biāo)簽的屬性進(jìn)行一個(gè)切片,切出第二、三位的有用數(shù)據(jù),定義一個(gè)par列表,放置切片數(shù)據(jù)。接著,對(duì)tag_count列表的數(shù)據(jù)進(jìn)行相加,這就得到了城市的印象標(biāo)簽總數(shù),對(duì)tag_count列表進(jìn)行遍歷相加,這里遍歷的過程我們需要設(shè)置條件,條件與我們切片的內(nèi)容有關(guān),分別為jd、cy和gw-yl,對(duì)應(yīng)的分別是景點(diǎn)、餐飲和購(gòu)物娛樂,這樣就得到了城市的景點(diǎn)印象標(biāo)簽總數(shù)、餐飲印象標(biāo)簽總數(shù)和購(gòu)物娛樂印象標(biāo)簽總數(shù)。接著我們爬取游記總數(shù),游記是URL規(guī)律為/yj/'+城市編號(hào)+'/',使用find方法,找到class屬性為count下的span標(biāo)簽第二個(gè)文本內(nèi)容,就得到了城市游記的總數(shù),最后,將城市名稱、城市印象標(biāo)簽總數(shù)、城市景點(diǎn)標(biāo)簽總數(shù)、城市餐飲標(biāo)簽總數(shù)、城市娛樂購(gòu)物總數(shù)和城市游記總數(shù)返還。圖城市小吃-景點(diǎn)-娛樂信息獲取實(shí)現(xiàn)代碼這里實(shí)現(xiàn)的是城市小吃、景點(diǎn)、娛樂數(shù)據(jù)的爬取,第一個(gè)函數(shù)名為get_city_food,它是用來獲取城市小吃排行榜里面的數(shù)據(jù)的,首先,還是url的導(dǎo)入,這里url的規(guī)律是/cy/'+城市編號(hào)+'/gonglve.html,還是使用find的方法,找到class屬性為list-rank標(biāo)簽下的所有h3標(biāo)簽,這里爬取的是小吃的名稱,由于爬取的只是小吃的名稱,可能導(dǎo)致不知道是哪里的小吃,所以我特意在小吃名稱前面加入了城市名稱,以便區(qū)分,同樣還是在class屬性為list-rank標(biāo)簽下使用find_all方法,找到所有class屬性為trend的文本內(nèi)容,這里爬取的是小吃的游記推薦數(shù),最后將爬取得到的小吃名稱,小吃游記推薦數(shù)通過一個(gè)二維數(shù)組返回。同樣,在城市娛樂中,城市娛樂與城市小吃所使用的爬取代碼是一樣的,只不過是url有所區(qū)別,城市娛樂的url規(guī)律是/yl/'+城市編號(hào)+'/gonglve.html,這里只需要將小吃代碼的url改為城市娛樂的url就可以了,返回一個(gè)娛樂名稱以及娛樂游記推薦數(shù)的二維數(shù)組。對(duì)比小吃和娛樂,景點(diǎn)的代碼還是有所不同的,同樣,景點(diǎn)的函數(shù)我們命名為get_city_jd,景點(diǎn)的url規(guī)律為/jd/'+城市編號(hào)+'/gonglve.html,還是使用find的方法,找到class屬性為row-top5標(biāo)簽下的所有h3標(biāo)簽,這里爬取的是景點(diǎn)的名稱,由于爬取的只是景點(diǎn)的名稱,可能導(dǎo)致不知道是哪里的景點(diǎn),所以我特意在景點(diǎn)名稱前面加入了城市名稱,以便區(qū)分,使用find_all方法,找到class屬性為rev-total標(biāo)簽的文本內(nèi)容,由于內(nèi)容包含中文字符,我們是哦那個(gè)replace方法,將文字內(nèi)容“條點(diǎn)評(píng)”替換為空,返回一個(gè)景點(diǎn)名稱以及景點(diǎn)點(diǎn)評(píng)數(shù)的二維數(shù)組。最后,我們對(duì)這些返回的二維數(shù)組導(dǎo)入到excel表中。圖城市標(biāo)簽數(shù)據(jù)以及游記數(shù)據(jù)圖0城市小吃-景點(diǎn)-娛樂信息數(shù)據(jù)通過代碼,這樣我們就能得到四個(gè)存儲(chǔ)數(shù)據(jù)的excel表格,最后我們就需要根據(jù)這些數(shù)據(jù),進(jìn)行可視化分析。數(shù)據(jù)可視化處理數(shù)據(jù)可視化處理所使用的庫(kù)Pyecharts庫(kù),這里我們使用的Pyecharts來對(duì)數(shù)據(jù)進(jìn)行可視化處理,Pyecharts用于圖表的生成,它可以將數(shù)據(jù)以圖表的形式生成,然后自己在本地生成一個(gè)網(wǎng)頁(yè)用于保存圖表信息,我們可視化的圖表就是在這些生成的網(wǎng)頁(yè)里面,Pyecharts里面包含了很多圖表,這里我們可視化使用到的有bar,geo以及page。柱狀圖數(shù)據(jù)可視化代碼實(shí)現(xiàn)圖馬蜂窩全國(guó)旅游游記-景點(diǎn)-餐飲-娛樂購(gòu)物信息可視化代碼這里我們使用numpy庫(kù)讀取之前爬蟲所保存的excel數(shù)據(jù),對(duì)其中我們需要的數(shù)據(jù)進(jìn)行了一個(gè)排序,畢竟我們是需要得出哪些數(shù)據(jù)是比較靠前來得出熱門程度,可視化使用的是bar柱狀圖,xaxis表示的是x軸坐標(biāo),x軸坐標(biāo)一共有十五個(gè)數(shù)據(jù),數(shù)據(jù)來源是city_base表中tag_yl_count排名前15位的城市名稱,y軸坐標(biāo)是city_base表中tag_yl_count排名前15位的數(shù)據(jù),還有就是柱狀圖名稱,這里由于某些名稱過長(zhǎng)導(dǎo)致了x軸無法顯示完全,所以這里我們對(duì)x軸數(shù)據(jù)使用了一個(gè)45°的傾斜表示,這樣x軸數(shù)據(jù)就能顯示全部,這里我一共寫了四個(gè)bar方法,大致代碼都是差不多的,所以這里只截圖了一個(gè)bar方法出來,這四個(gè)bar的區(qū)別在于讀取city_base表后,對(duì)其進(jìn)行排序時(shí)的數(shù)據(jù)是不同的,四個(gè)bar分別排序的數(shù)據(jù)分別為total_city_yj、tag_jd_count、tag_food_count、tag_yl_count,最后使用了一個(gè)page,將四個(gè)bar添加到page中,生成為一個(gè)命名為馬蜂窩全國(guó)旅游游記-景點(diǎn)-餐飲-娛樂購(gòu)物信息可視化的HTML頁(yè)面中。餅狀圖可視化代碼實(shí)現(xiàn)圖景點(diǎn)人氣排名-餐飲人氣排名-娛樂購(gòu)物人氣排名信息可視化代碼這里是對(duì)城市的小吃、景點(diǎn)、娛樂進(jìn)行可視化處理,由于這三部分代碼構(gòu)成也是差不多的,所以這里就拿娛樂模塊來講,首先是數(shù)據(jù)的導(dǎo)入,娛樂模塊的數(shù)據(jù)我們是存儲(chǔ)到了一個(gè)city_yl表中,所以第一件事是讀取,然后根據(jù)表中的yl_count進(jìn)行從大到小的排序,使用pie方法,首先設(shè)置長(zhǎng)寬,接著添加數(shù)據(jù),具體使用是[list(z)forzinzip(Faker.choose(),Faker.values())],F(xiàn)aker.choose(),Faker.values()就是我們需要添加的數(shù)據(jù)的列名來寫入,接著就是一個(gè)餅狀圖的命名以及界面的簡(jiǎn)單排版,居中以及左邊距離百分之一,頂部距離百分之十五,我們最后使用了一個(gè)page,將三個(gè)pie添加到page中,生成為一個(gè)命名為馬蜂窩全國(guó)旅游景點(diǎn)人氣排名-餐飲人氣排名-娛樂購(gòu)物人氣排名信息餅狀圖可視化的HTML頁(yè)面中。熱力圖數(shù)據(jù)可視化代碼實(shí)現(xiàn)圖馬蜂窩全國(guó)旅游熱力圖TOP30可視化代碼這里我們同樣先導(dǎo)入數(shù)據(jù),這里導(dǎo)入的數(shù)據(jù)已經(jīng)是提前排序好保存下來的了,然后根據(jù)city_name和total_city_yj將前30的數(shù)據(jù)放置到data中,再使用geo方法,首先設(shè)置地圖,為中國(guó)地圖,數(shù)據(jù)為data,大小為10,顏色為藍(lán)色,主題是熱力圖,命名為Geo-HeatMap,生成一個(gè)名為馬蜂窩全國(guó)旅游熱力圖TOP30的HTML界面。可視化圖片展示圖4.4.1馬蜂窩全國(guó)旅游游記TOP10圖4.4.2馬蜂窩全國(guó)旅游景點(diǎn)類標(biāo)簽TOP15圖4.4.3馬蜂窩全國(guó)旅游餐飲類標(biāo)簽TOP15圖4.4.4馬蜂窩全國(guó)旅游購(gòu)物娛樂類標(biāo)簽TOP15圖4.4.5馬蜂窩全國(guó)旅游景點(diǎn)人氣排名TOP15圖4.4.6馬蜂窩全國(guó)旅游餐飲人氣排名TOP15圖4.4.7馬蜂窩全國(guó)旅游娛樂購(gòu)物人氣排名TOP15圖4.4.8馬蜂窩全國(guó)旅游熱力圖TOP30通過可視化圖片我們可以知道,在馬蜂窩旅游中,呼倫貝爾是最多人去旅游的地方,呼倫貝爾經(jīng)常被我們稱之為大草原,呼倫貝爾位于內(nèi)蒙古地區(qū),在熱力圖顯示中,我們看可以清楚的看到中國(guó)的北部地區(qū)有較深顏色的顯示,呼倫貝爾也是一個(gè)避暑勝地,在夏天的季節(jié),那兒的天氣確實(shí)十分涼爽,十分適宜人們旅游避暑,騎著馬兒欣賞大草原的風(fēng)光。北京作為首都,當(dāng)然也是很多人旅游的圣地,擁有眾多的旅游景點(diǎn),故宮、長(zhǎng)城、頤和園等等,都是著名的世界遺產(chǎn),想一睹中華民族輝煌歷史的,北京是個(gè)不錯(cuò)的旅游地點(diǎn)。接著,我們?cè)賮斫榻B下廈門這座旅游城市從數(shù)據(jù)中我們可以看到,景點(diǎn)類的城市最多人去的是廈門,餐飲類的城市最多人去的也是廈門,可見廈門也是許多人心目中的旅游勝地,首先是廈門的位置,廈門位于沿海地區(qū),所以這里冬天天氣溫和,夏天沒有酷暑,這對(duì)于旅游來說就是一個(gè)很不錯(cuò)的條件,不過由于沿海地區(qū),大家旅游的時(shí)候,記得避開夏天的臺(tái)風(fēng)天氣,其次,沿海的風(fēng)景,十分令人向往,對(duì)于內(nèi)陸地區(qū)人們沒有到海邊玩過的人,這也是一個(gè)很大的吸引點(diǎn),接著,就是美食了,經(jīng)濟(jì)發(fā)展到現(xiàn)在,人們生活水平提高的同時(shí),對(duì)于吃的要求也越來越高,不僅要吃的飽,還得吃得好,而恰恰好廈門的美食數(shù)不勝數(shù),在餐飲TOP15的數(shù)據(jù)中我們就可以發(fā)現(xiàn),廈門的美食就獨(dú)占其六,沙茶面、海蠣煎、土筍凍、花生湯等等,無一不誘惑著吃貨們的味蕾,最后就是價(jià)格方面了,廈門的旅游價(jià)格還是較低的,對(duì)比之前的呼倫貝爾大草原以及北京來說,廈門屬于實(shí)惠的旅游地點(diǎn)。在娛樂標(biāo)簽這快,麗江是最多人旅游的地方,小橋流水人家的風(fēng)景以及白雪皚皚的玉龍雪山,都是很不錯(cuò)的旅游地點(diǎn),但是由于近年來麗江酒吧女的事件,導(dǎo)致麗江旅游名聲有了污點(diǎn),所以麗江旅游時(shí)候,要辯真假,火眼金睛分清楚酒吧套路,別中招了。最后,根據(jù)熱力圖的顯示,我們可以清楚的看出南方地區(qū)以及沿海地區(qū)都是比較熱門的旅游地點(diǎn),看來還是很多人喜歡南方的美食,宜人的天氣氣候以及沿海的風(fēng)光啊,根據(jù)這些數(shù)據(jù),你有沒有得出你想要去旅游的地方呢?不足之處在做熱力圖顯示的時(shí)候,由于Pyecharts庫(kù)中自帶的城市鍵值對(duì)與我們?cè)隈R蜂窩上爬取下來的城市名稱會(huì)出現(xiàn)不匹配的現(xiàn)象,所以這里熱力圖顯示只弄了TOP30的數(shù)據(jù)。另外,我們爬蟲是為了分析馬蜂窩網(wǎng)站的旅游數(shù)據(jù)來解釋說明旅游的好去處,但是由于今年的新冠病毒的緣故,對(duì)旅游行業(yè)的沖擊十分巨大,很多旅游業(yè)都處于閉業(yè)狀態(tài),導(dǎo)致了馬蜂窩網(wǎng)站旅游數(shù)據(jù)的沒有實(shí)時(shí)更新,所以我們的數(shù)據(jù)來源只能建立在新冠病毒爆發(fā)之前的的數(shù)據(jù),中間夾雜著幾個(gè)月的空白期,也希望有旅游意向的人們,在新冠病毒完全控制下來之前,取消近期旅游項(xiàng)目,避免中招。當(dāng)疫情結(jié)束的時(shí)候,再根據(jù)本文的數(shù)據(jù)分析以及熱門城市,選擇自己喜好的旅游目的地、景點(diǎn)、小吃或娛樂項(xiàng)目,再去放松自己,散散心。期望與總結(jié)這幾個(gè)月來,面對(duì)畢業(yè)設(shè)計(jì)的構(gòu)思與設(shè)計(jì),通過不斷的網(wǎng)上尋找資料,閱讀有關(guān)書籍以及對(duì)參考文獻(xiàn)的閱讀理解,一步一步的走過來,終于是將畢業(yè)設(shè)計(jì)與論文成功的實(shí)現(xiàn)并完成了。通過這次畢業(yè)設(shè)計(jì),我又一次的感受到了python這門編程語(yǔ)言的魅力所在,它簡(jiǎn)單易懂的代碼以及豐富的庫(kù)給我留下了深刻的印象,讓簡(jiǎn)單的操作能夠發(fā)揮出復(fù)雜的作用,讓人愛不釋手。當(dāng)然,在畢業(yè)設(shè)計(jì)實(shí)現(xiàn)的過程中,也遇到過很多的困難,有時(shí)候在尋找頁(yè)面規(guī)則的時(shí)候,往往卡在那里好久,久久沒有進(jìn)展,讓人無從下手,大大的減緩了畢業(yè)設(shè)計(jì)完成進(jìn)度,這個(gè)時(shí)候,我的同學(xué)以及導(dǎo)師吳瑞然老師都會(huì)幫我指明方向,同學(xué)之間的互相討論,不同的人有不同的思考方式,擁有不同的看法意見,大多時(shí)候能夠幫助我換種方法去實(shí)現(xiàn)目的,讓我受益匪淺。吳瑞然老師則會(huì)引導(dǎo)我如何去思考和解決這個(gè)困難,在這里我要感謝吳瑞然老師對(duì)我的幫助,感謝老師給予的資料參考以及建議。這次的畢業(yè)設(shè)計(jì)也讓我學(xué)到了很多之前不懂的知識(shí),比如python庫(kù)的運(yùn)用,有些庫(kù)是我第一次使用,讓我的代碼知識(shí)儲(chǔ)量又一次增加了,也培養(yǎng)了我獨(dú)立完成任務(wù)的能力,樹立了自己的自信心。相信自己在以后的編程道路上,能夠披荊斬棘,走得更遠(yuǎn),學(xué)的更多。參考文獻(xiàn)[1]郭麗蓉;;基于Python的網(wǎng)絡(luò)爬蟲程序設(shè)計(jì)[J];電子技術(shù)與軟件工程;2017年23期[2]劉杰;葛曉玢;聞順杰;;基于Python的網(wǎng)絡(luò)爬蟲系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J];信息與電腦(理論版);2018年12期[3]唐琳;董依萌;何天宇;;基于Python的網(wǎng)絡(luò)爬蟲技術(shù)的關(guān)鍵性問題探索[J];電子世界;2018年14期[4]彭智鑫;;基于Python的深度網(wǎng)絡(luò)爬蟲的設(shè)計(jì)與實(shí)現(xiàn)[J];信息記錄材料;2018年08期[5]潘巧智;張磊;;淺談大數(shù)據(jù)環(huán)境下基于python的網(wǎng)絡(luò)爬蟲技術(shù)[J];網(wǎng)絡(luò)安全技術(shù)與應(yīng)用;2018年05期[6]魏程程;;基于Python的數(shù)據(jù)信息爬蟲技術(shù)[J];電子世界;2018年11期[7]楊國(guó)志;江業(yè)峰;;基于python的聚焦網(wǎng)絡(luò)爬蟲數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J];科學(xué)技術(shù)創(chuàng)新;2018年27期[8]夏天琦;;Python爬蟲獲取網(wǎng)絡(luò)圖片[J];電子世界;2018年10期[9]郭二強(qiáng);李博;;大數(shù)據(jù)環(huán)境下基于python的網(wǎng)絡(luò)爬蟲技術(shù)[J];計(jì)算機(jī)產(chǎn)品與流通;2017年12期[10]涂輝;王鋒;商慶偉;;Python3編程實(shí)現(xiàn)網(wǎng)絡(luò)圖片爬蟲[J];電腦編程技巧與維護(hù);2017年23期致謝經(jīng)過了這幾個(gè)月來的努力,終于是將程序與論文完成,過程充滿了挑戰(zhàn)以及坎坷,但是還是通過努力,成功的完成目標(biāo),這里首先要感謝的是我的指導(dǎo)老師吳瑞然老師,在選擇老師作為導(dǎo)師之后,從任務(wù)的要求,到作品的制作過程,老師都有耐心的指導(dǎo),每次遇到困難,思想轉(zhuǎn)不過彎的時(shí)候,老師都會(huì)給予意見,為我解惑,受益匪淺,在論文的定稿過程中,老師也會(huì)提出自己想法,哪里需要修改,哪里需要添加,有什么不足,是否文字描述太多累贅,都會(huì)一一提出意見,都對(duì)我?guī)椭艽?,這里特別感謝老師給予的幫助。同時(shí)也感謝我的同學(xué)給予的幫助,同學(xué)之間的互相討論,不同的人有不同的思考方式,擁有不同的看法意見,大多時(shí)候能夠幫助我換種方法去實(shí)現(xiàn)目的,讓我受益匪淺,最后,感謝四年以來同學(xué)的陪伴以及老師的支持,在此跟你們說一聲,謝謝!

HYPERLINK如何選擇組裝電腦配件

如何選擇組裝的電腦配件.

第一,選擇好CPU平臺(tái),就是INTER還是AMD,看你是要配什么樣的電腦,高端還是低端的,兩個(gè)平臺(tái)都高低的產(chǎn)品。第二,選擇主板了,主板的品牌比較多,質(zhì)量,價(jià)格也不一,當(dāng)你第一步卻定了,那么主板也就相應(yīng)的卻定下來了,以INTER為例,只可以選擇775接口的主板(早期有478接口的,不推薦),主板的選擇主要有兩種,一是集成顯卡,二是不集成顯卡。集成顯卡的話,就可以省下顯卡的錢,但是對(duì)游戲玩家不推薦。那么當(dāng)然是選擇不集成顯卡的主板了,而且最好選擇一線品牌,如華碩,技嘉等。主板里,還有個(gè)蕊片組的選擇。關(guān)于蕊片組,各個(gè)品牌的主板命名有些不一樣,主流是INTER965,945,915,VIA的KT890,還有NFORCE4,NFORCE5。等。比較難說清楚。最好是選擇INTER的蕊片組,雖然價(jià)格會(huì)稍高一些。推薦945,技術(shù)比較成熟。第三,顯卡的選擇。顯卡主要還是有兩類品牌,GEFORCE和ATI,兩個(gè)品牌有高,中,低的顯卡。顯卡選擇要看你個(gè)人喜歡了,預(yù)算充足的話,最好是買中,高端的顯卡。

第四,就是內(nèi)存了,內(nèi)存關(guān)系電腦的穩(wěn)定性。當(dāng)然是要好一點(diǎn)的。買一線品牌的。現(xiàn)在配電腦,主流是DDR667,DDR800DDR1333第五,顯示器的選擇,推薦液晶。如何選擇硬件組裝電腦這是一個(gè)老生常談的問題了,這也是一個(gè)讓高手們顯示自己硬件功底的問題,同時(shí)這還是一個(gè)讓很多新手為之焦頭爛額的問題。該怎么配?具體配什么?怎樣配才能盡量減小瓶頸?本文就將從內(nèi)到外,從理論到實(shí)踐,為朋友們抽絲剝繭一一道來。

一、CPU

作為一臺(tái)電腦最關(guān)鍵的組成部分,CPU確實(shí)起著舉足輕重的作用,但體現(xiàn)一臺(tái)電腦的綜合速度,并不是僅僅依靠CPU的,常??吹胶芏嘈率謧?cè)谂潆娔X的時(shí)候,把CPU選的很好,但其他的東西諸如內(nèi)存、主板、硬盤等都選的不太理想,好像這臺(tái)電腦速度的快慢就體現(xiàn)在CPU速度的快慢上似的。甚至很多著名的品牌機(jī)廠商,都推出過類似“P4+256M內(nèi)存”的這種跛腳配置。其實(shí)對(duì)于一般的家用電腦而言,一個(gè)真正會(huì)配的高手,是不會(huì)把大量的錢花在CPU上的。家用電腦,畢竟不是做密集型科學(xué)計(jì)算用的,它講求的是多種媒體的配合工作,講求的是能一邊下載文件、一邊上網(wǎng)瀏覽網(wǎng)頁(yè)、一邊聽音樂、一邊還能打開其他的程序,在這種情況下,提升內(nèi)存的容量比提升CPU的主頻對(duì)速度的影響要明顯的多。現(xiàn)今的中國(guó)家庭用戶,很多家長(zhǎng)對(duì)于電腦一竅不通,他們只聽說“奔四”代表著速度快,并不知道整機(jī)速度的快慢除了CPU以外,還有很多其他的因素影響著它。但在買電腦的時(shí)候,最后做決定并掏錢的人,往往都是這些啥都不懂的家長(zhǎng)們,于是就出現(xiàn)了上面的一幕:品牌機(jī)廠商為了能有更好的銷路、兼容機(jī)裝機(jī)店的銷售人員為了能拿到更多的獎(jiǎng)金,開始違背良心來配置出這種高主頻處理器、低容量?jī)?nèi)存的跛腳電腦。說嚴(yán)重點(diǎn),這是屬于對(duì)消費(fèi)者的不負(fù)責(zé)任,是一種商業(yè)欺詐行為!同樣5000元的配置,高手配出來的賽揚(yáng),比新手配出來的P4還要快很多,曾經(jīng)有一家全球著名的硬件網(wǎng)站在2003年的時(shí)候刊登過一篇關(guān)于配置家用電腦時(shí)各硬件占用總預(yù)算百分比的文章,文中很明確的提到了CPU的價(jià)錢最好不要超過總預(yù)算的10%-15%,我們雖然不能說他肯定完全正確,但至少人家是通過很多調(diào)查后得出的結(jié)論,有借鑒的理由。反觀現(xiàn)在的很多所謂的“低價(jià)奔四電腦”、“3999元買P4品牌機(jī)”之類的廣告,我想說的就是:你花了3999元,只買了一塊P4的處理器,其他的什么都沒有了!

二、內(nèi)存

對(duì)于配置一臺(tái)電腦來說,內(nèi)存是重頭戲,容量、速度、類型等等每一項(xiàng)指標(biāo)都對(duì)最終的整機(jī)綜合速度起著至關(guān)重要的影響,尤其是內(nèi)存的帶寬和容量。對(duì)于內(nèi)存帶寬而言,很多人都認(rèn)為400MHz、533MHz前端總線的賽揚(yáng)四或P4,配單通道的DDR內(nèi)存就足夠了,雙通道DDR內(nèi)存是配合800MHz以上前端總線的P4處理器用的,其實(shí)這樣就大錯(cuò)特錯(cuò)了,哪怕是最老的賽揚(yáng)四,都需要雙通道的DDR內(nèi)存才能達(dá)到它的帶寬!也就是說,你如果選擇賽揚(yáng)四1.8G,必須配合865以上的主板和至少雙通道DDR200的內(nèi)存,才能滿足它的帶寬要求!稍微計(jì)算一下就可以得知:賽揚(yáng)四1.8G的前端總線是400MHz,它的內(nèi)存帶寬理論值是400MHz×64bit÷8=3.2G/s,但當(dāng)它裝在845系列的主板上時(shí),由于845主板的限制,即使你插上能符合它帶寬要求的DDR400內(nèi)存,也只能運(yùn)行在DDR266上,這時(shí)的內(nèi)存所能提供的帶寬是266MHz×64bit÷8=2.1G/s,比3.2G/s要小很多,即使你通過BIOS里的內(nèi)存調(diào)節(jié)選項(xiàng)往上調(diào)節(jié)一檔(也只能調(diào)節(jié)一檔而已),讓內(nèi)存運(yùn)行在DDR333下,所能提供的帶寬也僅僅是333MHz×64bit÷8=2.66G/s,離3.2G/s還是有一定的距離,而內(nèi)存帶寬的降低,能非常明顯的降低整機(jī)的綜合速度,運(yùn)行任何程序都能明顯的感覺出來!所以如果想滿足賽揚(yáng)1.8G處理器的內(nèi)存帶寬要求,你必須要為它配置865以上的主板和雙通道的內(nèi)存才行!P4亦是如此。很多人也許會(huì)問:那845系列的主板是配什么處理器的呢?我想回答你的就是:845系列的主板是屬于“不能用”的主板,因?yàn)樘幚砥饔肋h(yuǎn)比主板發(fā)展的快,當(dāng)初Intel造出845系列的芯片組是為了能給當(dāng)時(shí)的賽揚(yáng)和P4提供一個(gè)過渡的平臺(tái),不至于讓它們成為“沒有主板配合”的處理器而已,也是為了能在低端市場(chǎng)分一杯羹,而現(xiàn)今865甚至9xx系列的主板橫行的時(shí)候,845系列的主板確實(shí)是屬于“不能用”的主板了,滿足不了任何一款處理器的內(nèi)存帶寬,造成性能上的嚴(yán)重低下,試問這種主板你會(huì)選擇么?即使配臺(tái)2000多元的超低價(jià)電腦,也不要去選擇845系列的主板,至少需要865以上的和雙通道內(nèi)存才行,因?yàn)閮?nèi)存帶寬是一個(gè)非常影響系統(tǒng)性能的參數(shù),倘若一味的為了省錢而配置845系列的主板,那就得不償失了。

內(nèi)存的容量方面,應(yīng)每個(gè)人對(duì)電腦的使用方向不同,容量的要求也是不同的,現(xiàn)在配置的家用電腦,筆者建議:如果不打游戲,或者是打打掃雷、紙牌之類的游戲,平時(shí)注重于上網(wǎng)瀏覽或者是聊天、看電影之類的應(yīng)用的話,內(nèi)存容量不應(yīng)該低于1G;如果是偶爾打打單機(jī)游戲或者是網(wǎng)絡(luò)游戲,內(nèi)存容量應(yīng)該選擇在2G左右,如果是經(jīng)常打大型的游戲或是進(jìn)行HDTV視頻編輯等應(yīng)用,那么4G的內(nèi)存是必不可少的。

三、主板

一臺(tái)電腦的穩(wěn)定性和兼容性,一大部分是看主板的,一款優(yōu)秀的主板不僅需要擁有上等的用料和優(yōu)良的做工,還需要擁有合理的走線設(shè)計(jì),那些沒有技術(shù)實(shí)力的三、四線主板廠家生產(chǎn)的主板,多數(shù)是采用公版走線,而且用料非常差,穩(wěn)定性不堪一擊,這種類型的主板,筆者建議寧愿不買電腦也不要配這種主板,否則以后將會(huì)是個(gè)淘氣的祖宗。對(duì)于家庭用戶,主板方面一定不能省錢,預(yù)算夠的話最好能買個(gè)一線的主板品牌,如果預(yù)算實(shí)在不足,二線的主板是底線了,不要再往下選擇了,畢竟家用電腦是用來使用的,不是用來整天維修的。再談到主板的用料,筆者常常看到很多新手在配置主板的時(shí)候,貌似老鳥似的說某某品牌的主板好,某某品牌的不好,試問你知道它好在哪里么?不好在哪里么?這個(gè)就要看主板的用料了,雖然用料好的主板并不能代表一定是高檔主板,但最少能代表它的電氣性能出色。舉一個(gè)很簡(jiǎn)單的例子吧:有A、B兩款主板,A主板的處理器供電濾波電容采用的是日系電容,B主板的處理器供電濾波電容采用的是臺(tái)系電容,那么基本上可以肯定的是:如果在電源輸出電壓的波動(dòng)范圍比較大的情況下,A主板就比較能耐得住,而B主板就很容易產(chǎn)生電容鼓包、漏夜等情況。不要小看這小小的電容,筆者從一個(gè)開維修店的朋友那里得知,來維修主板的人,有80%的都是這幾個(gè)小電容損壞,究其原因,就是電源選擇的不好,導(dǎo)致了輸出電壓的不穩(wěn)定,久而久之最終導(dǎo)致這幾個(gè)小電容爆漿,并且詳細(xì)敘述了主板的品牌:“一線廠家的×碩牌主板就很少出現(xiàn)這種情況,但同樣為一線廠家的×星牌主板,經(jīng)常遇到!原因就是前者的大部分主板使用的是日系電容,而后者的大部分主板為了省錢,選用的是臺(tái)系電容!”廠家的廣告不能信,宣傳也不能信,看到一個(gè)產(chǎn)品的廣告之后,你所能相信的唯一一點(diǎn)就是:地球上有這么個(gè)產(chǎn)品的存在!然后其他的就統(tǒng)統(tǒng)都不能信了!網(wǎng)上有好多所謂的“評(píng)測(cè)”文章,都是槍手寫的,基本上沒有任何參考余地,只能作為一篇小說來讀,一款主板的真正性能,只有你自己使用了之后才能知道。廠家為了銷量、商家為了利潤(rùn),他們能把最最垃圾的主板宣傳為最頂級(jí)的產(chǎn)品,筆者曾經(jīng)就看到過一款四線品牌的主板廠商,在對(duì)其主流主板的廣告上說“最優(yōu)秀的設(shè)計(jì)、最精湛的工藝、最穩(wěn)定的性能”……結(jié)果一看報(bào)價(jià):550元/塊……其他的話我也不想多說了,只想問問這家廠商:你這么垃圾的主板都用了三個(gè)“最”字,那么華碩的同芯片組主板,售價(jià)是你三倍的,應(yīng)該用什么詞語(yǔ)來描述了??中國(guó)有一句古話:一分錢一分貨,說的非常正確!不要認(rèn)為價(jià)格高的主板就是暴利產(chǎn)品,從市場(chǎng)經(jīng)濟(jì)學(xué)上說,暴利產(chǎn)品是不會(huì)被市場(chǎng)所接受的,之所以他能存活到今天,而且售價(jià)依然是這么高,肯定有他的理由,他在做工用料方面肯定比其他品牌的要好很多,成本高所以售價(jià)高,在此,筆者奉勸大家一句:買主板千萬(wàn)不要憑僥幸心理,認(rèn)為自己能花很少的錢買到很好的東西,只有錯(cuò)買的沒有錯(cuò)賣的,商家永遠(yuǎn)都比你精明!主板上面還是老老實(shí)實(shí)的多花點(diǎn)錢來買個(gè)一線產(chǎn)品吧,否則以后有你吃苦的時(shí)候!

四、硬盤

現(xiàn)在的電腦,硬盤的速度當(dāng)之無愧的成為了“第一大瓶頸”,無論你是再高的高手,配電腦的時(shí)候也無法消除這個(gè)瓶頸的存在,我們只有盡量的減小…再減小……。對(duì)于家用電腦的硬盤來說,容量和速度是兩個(gè)非常重要的參數(shù),容量上而言,筆者建議:如果你的電腦只是上網(wǎng)瀏覽瀏覽、偶爾打打小游戲的,那么160G的硬盤是個(gè)不錯(cuò)的選擇;如果你常常下載軟件或電影,那么250G的硬盤是個(gè)不錯(cuò)的選擇,如果你是個(gè)下載狂人,那么400G的硬盤比較適合你;如果你有DV或者是經(jīng)常編輯大型的視頻文件,那么400G×2比較適合你,如果你是個(gè)玩HDTV的人,那么恭喜你,400G×4也許你都不夠用。對(duì)于硬盤容量上的選擇,你不能考慮現(xiàn)在是否夠用,你應(yīng)該考慮未來的1年里是否夠用,大概的公式是:現(xiàn)在需要的容量×3。也就是說,如果你現(xiàn)在感覺80G的硬盤差不多夠用了,那么你就需要買個(gè)250G的硬盤。如果你現(xiàn)在感覺120G的硬盤夠用了,那么就去買個(gè)400G的硬盤吧。硬盤另外的一個(gè)參數(shù)就是速度,受到內(nèi)部傳輸率等諸多因素的限制,一塊硬盤的實(shí)際傳輸速度是不可能達(dá)到它的接口速度的,現(xiàn)在的并口硬盤基本上都是ATA133了,串口硬盤也都是150了,但民用級(jí)硬盤的實(shí)際傳輸速度最快的也還沒突破66M/s,所以跟內(nèi)存相比,硬盤的速度是電腦中最大的瓶頸,那么怎么來減小這個(gè)瓶頸呢?于是人們就發(fā)明了RAID,就是磁盤陣列(當(dāng)然RAID不是僅僅為了這個(gè)而發(fā)明的),用兩塊一模一樣的硬盤來組成RAID0,速度理論上能提高1倍,雖然實(shí)際上是不可能達(dá)到1倍的,但至少能非常非常明顯的感覺到了硬盤速度的提升,筆者建議:如果你買的主板是帶有RAID功能的,并且你需要保存的數(shù)據(jù)不是很重要的話,那么強(qiáng)烈建議你在預(yù)算允許的情況下購(gòu)買兩塊硬盤來組建RAID0,這將使你能親身體會(huì)到飛機(jī)與火車的速度差別!但最好是串口的,如果是并口的話,因?yàn)椴⒖谧叩氖荘CI總線,由于PCI總線上的設(shè)備比較多,所以速度不可能達(dá)到比較高的地步,但如果是串口的話,那么硬盤的速度提升將更加明顯!

五、顯示器

顯示器方面,筆者想澄清一個(gè)觀念:曾經(jīng)聽過非常多的人說液晶顯示器保護(hù)眼睛,因?yàn)闆]有輻射和閃爍……包括很多業(yè)內(nèi)人士都這么認(rèn)為的,其實(shí)錯(cuò)了,液晶顯示器比普通的CRT還要傷眼睛!因?yàn)閭劬Σ粌H僅是輻射和閃爍,還有對(duì)比度、亮度等參數(shù),雖然液晶顯示器的輻射和閃爍比CRT要小的多,但它那要命的對(duì)比度、那要命的色澤度、還有那大于每平方米300cd的亮度,這些都會(huì)對(duì)眼睛造成很大的傷害,并且你即使將液晶顯示器的亮度和對(duì)比度調(diào)節(jié)到最低,也還是非常的刺眼。德國(guó)的一家權(quán)威機(jī)構(gòu)做過一項(xiàng)調(diào)查:液晶顯示器用久了會(huì)使人的眼睛感覺到疲倦,甚至頭痛等癥狀,而使用相同時(shí)間的CRT顯示器,卻基本沒有這些情況出現(xiàn)?,F(xiàn)在的通過TCO03認(rèn)證的CRT顯示器,其實(shí)外露的輻射已經(jīng)相當(dāng)小了,基本上對(duì)人已經(jīng)沒有多大的傷害了,閃爍感也可以通過調(diào)節(jié)刷新率來降低,筆者實(shí)在是搞不懂為什么很多人非要去選擇液晶顯示器,還非要說液晶顯示器不傷眼睛??一個(gè)最差的17寸

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論