![Python實(shí)戰(zhàn)之?dāng)?shù)據(jù)庫應(yīng)用和數(shù)據(jù)獲取 課件 【Ch09】Python數(shù)據(jù)爬取_第1頁](http://file4.renrendoc.com/view/52114d285e2cf30260964e5ce4a906c8/52114d285e2cf30260964e5ce4a906c81.gif)
![Python實(shí)戰(zhàn)之?dāng)?shù)據(jù)庫應(yīng)用和數(shù)據(jù)獲取 課件 【Ch09】Python數(shù)據(jù)爬取_第2頁](http://file4.renrendoc.com/view/52114d285e2cf30260964e5ce4a906c8/52114d285e2cf30260964e5ce4a906c82.gif)
![Python實(shí)戰(zhàn)之?dāng)?shù)據(jù)庫應(yīng)用和數(shù)據(jù)獲取 課件 【Ch09】Python數(shù)據(jù)爬取_第3頁](http://file4.renrendoc.com/view/52114d285e2cf30260964e5ce4a906c8/52114d285e2cf30260964e5ce4a906c83.gif)
![Python實(shí)戰(zhàn)之?dāng)?shù)據(jù)庫應(yīng)用和數(shù)據(jù)獲取 課件 【Ch09】Python數(shù)據(jù)爬取_第4頁](http://file4.renrendoc.com/view/52114d285e2cf30260964e5ce4a906c8/52114d285e2cf30260964e5ce4a906c84.gif)
![Python實(shí)戰(zhàn)之?dāng)?shù)據(jù)庫應(yīng)用和數(shù)據(jù)獲取 課件 【Ch09】Python數(shù)據(jù)爬取_第5頁](http://file4.renrendoc.com/view/52114d285e2cf30260964e5ce4a906c8/52114d285e2cf30260964e5ce4a906c85.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
Python數(shù)據(jù)爬取第九章新工科建設(shè)之路·數(shù)據(jù)科學(xué)與大數(shù)據(jù)系列Python實(shí)戰(zhàn)之?dāng)?shù)據(jù)庫應(yīng)用和數(shù)據(jù)庫獲取1爬蟲基礎(chǔ)1.爬蟲基礎(chǔ)在開始分詞與詞頻統(tǒng)計(jì)項(xiàng)目之前,我們先了解幾個(gè)庫。12pyecharts庫pyecharts庫是一個(gè)用于生成Echarts圖表的類庫。Echarts是百度開源的一個(gè)數(shù)據(jù)可視化JS庫。用Echarts生成的圖可視化效果非常棒,pyecharts用于與Python進(jìn)行對(duì)接,方便在Python中直接使用數(shù)據(jù)生成圖。關(guān)于pyecharts庫的更多信息可以查看官方網(wǎng)站:htp://.jieba分詞庫jieba(結(jié)巴)是一個(gè)強(qiáng)大的分詞庫,完美支持中文分詞。jieba支持以下3種分詞模式。①精確模式:將句子以最精確的方式切開,適合文本分析。②全模式:把句子中所有可以成詞的詞語都掃描出來,速度非???,但是不能解決詞語的歧義問題。③搜索引擎模式:在精確模式的基礎(chǔ)上,對(duì)長詞再次切分,提高召回率,適合用于搜索引擎分詞。jieba分詞庫還支持繁體分詞和自定義詞典。在開始分詞與詞頻統(tǒng)計(jì)項(xiàng)目之前,我們先了解幾個(gè)庫。34BeautifulSoup庫BeautifulSoup庫是用Python寫的一個(gè)HTML/XML解析器,主要功能是從網(wǎng)頁爬取需要的數(shù)據(jù)。BeautifulSoup庫可以很好地處理不規(guī)范標(biāo)記并生成剖析樹(parsetree).,提供簡單又常用的導(dǎo)航(navigating)、搜索和修改剖析樹的操作。BeautifulSoup庫將HTML解析為對(duì)象進(jìn)行處理,全部頁面轉(zhuǎn)變?yōu)樽值浠蛘邤?shù)組,相對(duì)于正則表達(dá)式的方式,可以大大簡化處理過程。Requests庫Requests庫是Python的一個(gè)實(shí)用的HTTP客戶端庫,完全滿足如今網(wǎng)絡(luò)爬蟲的需求。在開發(fā)使用上,Requests庫語法簡單易懂,完全符合Python優(yōu)雅、簡潔的特性。在兼容性上,Requests庫完全兼容Python2和Python3。1.爬蟲基礎(chǔ)2庫的安裝與使用2.庫的安裝與使用2.1在Python中,pyecharts庫的安裝方式如下:pyecharts庫的安裝與使用pyecharts庫的使用示例如下(pyecharts_exp.py):
在當(dāng)前目錄下創(chuàng)建一個(gè)名為static的文件夾,執(zhí)行該示例代碼,會(huì)在static目錄下生成一個(gè)名為pyecharts_exp.html的HTML文件。直接用Chrome或其他瀏覽器打開這個(gè)HTML文件,能看到一張如圖9-1所示的圖。2.庫的安裝與使用2.2在Python中,jieba分詞庫的安裝方式如下:jieba分詞庫的安裝與使用jieba分詞庫的使用示例如下(jieba_exp.py):2.庫的安裝與使用執(zhí)行示例代碼,得到如下結(jié)果:2.庫的安裝與使用2.3在Python中,BeautifulSoup庫的安裝方式如下:BeautifulSoup庫的安裝與使用BeautifulSoup庫的使用示例如下(beautiful_soup_exp.py):2.庫的安裝與使用執(zhí)行示例代碼,得到如下結(jié)果:2.4Requests庫可以通過pip安裝,安裝語句如下:Requests庫的安裝與使用HTTP常用請(qǐng)求有GET和POST兩種,Request庫區(qū)分不同的請(qǐng)求方式,下面以GET請(qǐng)求為例介紹。Requests庫實(shí)現(xiàn)GET請(qǐng)求示例如下(get_exp.py):2.庫的安裝與使用2.庫的安裝與使用3分詞與詞頻統(tǒng)計(jì)實(shí)戰(zhàn)3.分詞與詞頻統(tǒng)計(jì)實(shí)戰(zhàn)經(jīng)過前面兩節(jié)知識(shí)點(diǎn)的講解,現(xiàn)在我們結(jié)合這些知識(shí)點(diǎn)實(shí)現(xiàn)以下功能:①從一個(gè)指定網(wǎng)站爬取對(duì)應(yīng)數(shù)據(jù),本章以爬取百度知道的內(nèi)容為例,根據(jù)輸入指定關(guān)鍵字(關(guān)鍵字不能為空),爬取用該關(guān)鍵字搜索到的問題標(biāo)題和問題回答,并對(duì)問題標(biāo)題以搜索引擎模式進(jìn)行分詞。②將①中爬取的問題標(biāo)題、問題回答和分詞結(jié)果保存到MySQL數(shù)據(jù)庫中。③數(shù)據(jù)爬取結(jié)束并保存到數(shù)據(jù)庫后,從MySQL數(shù)據(jù)庫中取出保存的記錄,根據(jù)保存的分詞結(jié)果進(jìn)行統(tǒng)計(jì),經(jīng)過給定的關(guān)鍵詞庫進(jìn)行過濾后,統(tǒng)計(jì)各關(guān)鍵詞出現(xiàn)的次數(shù),并以圖表的形式展現(xiàn)出來。根據(jù)以上要求,下面介紹具體的實(shí)現(xiàn)方式。3.1在chapter9文件夾下創(chuàng)建一些文件或文件夾,功能介紹分別如下。整體結(jié)構(gòu)設(shè)計(jì)①database文件夾用于存放與數(shù)據(jù)庫直接關(guān)聯(lián)的文件。models.py文件用于編寫模型對(duì)象,即數(shù)據(jù)庫表對(duì)應(yīng)的對(duì)象,以及表的增、刪、改、查的編寫。mongo_conn.py文件用于編寫MongoDB數(shù)據(jù)庫連接代碼。②rule文件夾用于存放定義的規(guī)則,key_words.py文件用于編寫關(guān)鍵詞庫的集合。③server文件夾用于編寫操作MySQL數(shù)據(jù)庫的邏輯業(yè)務(wù)。getinputinfo..py文件用于讀取從控制臺(tái)輸入的參數(shù)值。info_search.py文件用于編寫數(shù)據(jù)爬取代碼,以及將爬取數(shù)據(jù)處理后保存到數(shù)據(jù)庫的邏輯。word_count.py文件用于編寫詞頻統(tǒng)計(jì)和生成圖表邏輯。3.分詞與詞頻統(tǒng)計(jì)實(shí)戰(zhàn)④mongo_server文件夾用于編寫操作MongoDB數(shù)據(jù)庫的邏輯業(yè)務(wù)。get_input_info.py文件用于讀取從控制臺(tái)輸入的參數(shù)值。mongo_info_search.py文件用于編寫數(shù)據(jù)爬取代碼,以及將爬取數(shù)據(jù)處理后保存到數(shù)據(jù)庫的邏輯。mongo_wordcount..py文件用于編寫詞頻統(tǒng)計(jì)和生成圖表邏輯。⑤static文件夾用于存放靜態(tài)HTML文件。mongo_rum.py文件為使用非關(guān)系型數(shù)據(jù)庫進(jìn)行操作的項(xiàng)目入口。⑦run.py文件為使用關(guān)系型數(shù)據(jù)庫進(jìn)行操作的項(xiàng)目入口。其完整代碼將在9.4節(jié)展示,下面對(duì)其邏輯進(jìn)行講解,并以代碼輔助。3.分詞與詞頻統(tǒng)計(jì)實(shí)戰(zhàn)3.2根據(jù)前面的整體結(jié)構(gòu)設(shè)計(jì),數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)代碼編寫在models.py文件中,定義了NLPAnalysis類,類中定義tablename的值為nlpanalysis,即表名為nlp_analysis。再定義4個(gè)字段,命名分別為id(主鍵,Integer類型)、questiontitle(問題標(biāo)題,String,長度為200)、question_answer(問題答案,String,長度為500)和fenciresult(標(biāo)題分詞結(jié)果,String,長度為1000)。代碼實(shí)現(xiàn)如下(models.py):數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)3.分詞與詞頻統(tǒng)計(jì)實(shí)戰(zhàn)若使用MongoDB,不需要設(shè)計(jì)數(shù)據(jù)結(jié)果,但需要獲取數(shù)據(jù)庫和集合的連接。封裝數(shù)據(jù)庫、集合獲取代碼示例如下(mongo_conn.py):3.分詞與詞頻統(tǒng)計(jì)實(shí)戰(zhàn)3.3根據(jù)從getinputinfo.py文件中獲取的輸入?yún)?shù),去指定網(wǎng)站根據(jù)指定關(guān)鍵字進(jìn)行數(shù)據(jù)爬取。數(shù)據(jù)爬取的關(guān)鍵點(diǎn)如下。分析網(wǎng)頁,分析需要用GET請(qǐng)求還是POST請(qǐng)求,如/。經(jīng)分析,要使用的是GET請(qǐng)求(此處不做具體爬蟲方法的介紹,可自行查詢資料解決,如在瀏覽器搜索:查看HTTP請(qǐng)求詳情,會(huì)顯示很多答案)。接著,分析請(qǐng)求頭的構(gòu)造形式,再分析進(jìn)行關(guān)鍵字搜索時(shí),參數(shù)的構(gòu)造形式是怎樣的,關(guān)鍵字怎樣放入U(xiǎn)RL請(qǐng)求中,定位到某一頁的請(qǐng)求參數(shù)是怎樣的,由此構(gòu)造一個(gè)通用的字符串參數(shù)。最后,分析問題標(biāo)題和問題答案所對(duì)應(yīng)的是哪些標(biāo)簽的內(nèi)容。這部分邏輯代碼實(shí)現(xiàn)如下,定義get_data_from_web方法(info_search.py):數(shù)據(jù)的爬取與保存3.分詞與詞頻統(tǒng)計(jì)實(shí)戰(zhàn)3.分詞與詞頻統(tǒng)計(jì)實(shí)戰(zhàn)其中,get_detail_info()方法實(shí)現(xiàn)如下:Jie_ba_fen_ci()方法實(shí)現(xiàn)如下:3.分詞與詞頻統(tǒng)計(jì)實(shí)戰(zhàn)問題標(biāo)題、問題答案和分詞結(jié)果取得后,接下來需要把這些獲取的信息保存到數(shù)據(jù)庫中。保存數(shù)據(jù)時(shí),將需要保存的數(shù)據(jù)以一個(gè)對(duì)象的形式傳遞給模型,在get_data_from_web()方法中需要加入以下代碼:同時(shí),需要在models.py中添加以下方法:3.分詞與詞頻統(tǒng)計(jì)實(shí)戰(zhàn)至此實(shí)現(xiàn)了數(shù)據(jù)的爬取和數(shù)據(jù)的持久化,完整代碼可在9.4節(jié)中查看。若使用MongoDB作為數(shù)據(jù)庫,則只需將get_data_from_web()方法中的代碼:改為:并導(dǎo)入數(shù)據(jù)庫,連接獲取模塊即可。3.分詞與詞頻統(tǒng)計(jì)實(shí)戰(zhàn)3.4爬取數(shù)據(jù)后,需要分析哪些關(guān)鍵詞對(duì)于詞頻分析是有用的,哪些是無用的,有用的保留,無用的則過濾。下面是一個(gè)簡單的關(guān)鍵詞搜集示例,這些可以視為有用的關(guān)鍵詞,代碼如下(key_words.py):制定關(guān)鍵詞庫3.分詞與詞頻統(tǒng)計(jì)實(shí)戰(zhàn)3.5有了數(shù)據(jù)和關(guān)鍵詞比對(duì)規(guī)則后,接下來要做的是從數(shù)據(jù)庫取出數(shù)據(jù),根據(jù)過濾規(guī)則過濾后,統(tǒng)計(jì)滿足規(guī)則的各詞的出現(xiàn)次數(shù)。定義word_counto方法,代碼如下(word_count.py):詞頻統(tǒng)計(jì)與圖表生成3.分詞與詞頻統(tǒng)計(jì)實(shí)戰(zhàn)query_.from_mysql()的實(shí)現(xiàn)如下:若使用MongoDB,則query._from_mysq1()的實(shí)現(xiàn)示例如下:在models.py文件中需要添加如下方法:3.分詞與詞頻統(tǒng)計(jì)實(shí)戰(zhàn)統(tǒng)計(jì)工作完成后,最后需要根據(jù)統(tǒng)計(jì)結(jié)果繪制圖表。以繪制水平圖表為例,實(shí)現(xiàn)代碼如下:在word_count()方法的最后需要調(diào)用該方法,以達(dá)到統(tǒng)計(jì)結(jié)束后就繪制統(tǒng)計(jì)圖的效果。完整代碼見9.4節(jié)。3.分詞與詞頻統(tǒng)計(jì)實(shí)戰(zhàn)4分詞和詞頻統(tǒng)計(jì)的完整代碼4.分詞和詞頻統(tǒng)計(jì)的完整代碼程序入口代碼如下(run.py):4.1MySQL操作處理的完整代碼根路徑配置代碼如下(config.py):模型實(shí)現(xiàn)代碼如下(models.py):4.分詞和詞頻統(tǒng)計(jì)的完整代碼取得輸入?yún)?shù)實(shí)現(xiàn)代碼如下(get_input_info.py):4.分詞和詞頻統(tǒng)計(jì)的完整代碼4.分詞和詞頻統(tǒng)計(jì)的完整代碼從網(wǎng)站取得數(shù)據(jù)并存儲(chǔ)到數(shù)據(jù)庫的實(shí)現(xiàn)代碼如下(info_search.py):4.分詞和詞頻統(tǒng)計(jì)的完整代碼4.分詞和詞頻統(tǒng)計(jì)的完整代碼有效關(guān)鍵詞實(shí)現(xiàn)代碼如下(key_words.py):詞頻統(tǒng)計(jì)并生成統(tǒng)計(jì)圖,為了更直觀地查看統(tǒng)計(jì)圖效果,本例中生成3種統(tǒng)計(jì)圖:水平圖表、餅圖、詞云圖。代碼實(shí)現(xiàn)如下(word_count.py):4.分詞和詞頻統(tǒng)計(jì)的完整代碼4.分詞和詞頻統(tǒng)計(jì)的完整代碼執(zhí)行unpy文件,從控制臺(tái)輸入如下信息:輸入信息后,控制臺(tái)打印出如下信息:4.分詞和詞頻統(tǒng)計(jì)的完整代碼在static文件夾下將生成如圖9-2所示的靜態(tài)HTML文件。用Chrom瀏覽器打開bar_horizontal.html文件,得到如圖9-3所示的水平圖表。用Chrom瀏覽器打開pie.html文件,得到如圖9-4所示的餅圖統(tǒng)計(jì)圖。4.分詞和詞頻統(tǒng)計(jì)的完整代碼用Chrom瀏覽器打開wordcloud.html文件,得到如圖9-5所示的詞云圖統(tǒng)計(jì)圖。至此完成了分詞和生成統(tǒng)計(jì)圖的功能。在該項(xiàng)目中也可以生成更多其他形式的統(tǒng)計(jì)圖,也可以將該項(xiàng)目擴(kuò)展為功能更加強(qiáng)大的項(xiàng)目,可以寫入CSV文件和發(fā)送郵件,加入提醒相關(guān)人員對(duì)應(yīng)的信息的功能。4.分詞和詞頻統(tǒng)計(jì)的完整代碼程序入口實(shí)現(xiàn)示例代碼如下(mongo_run.py):4.2MongoDB操作處理的完整代碼實(shí)現(xiàn)碼4.分詞和詞頻統(tǒng)計(jì)的完整代碼接下來的PY文件與關(guān)系型數(shù)據(jù)庫中對(duì)應(yīng)PY文件的差別不大,此處不具體提供示例代碼,只提供示例代碼文件名,讀者可以從Github上clone。取得MongoDB數(shù)據(jù)庫連接的示例代碼見mongo_conn.py.取得輸入?yún)?shù)的示例代碼見mongo_server/get_input_info.py.取得數(shù)據(jù)并存儲(chǔ)到MongoDB數(shù)據(jù)庫的示例代碼mongo_server/mongo_info_search.py.詞頻統(tǒng)計(jì)并生成
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030年園門項(xiàng)目投資價(jià)值分析報(bào)告
- 2025至2030年臥式雙螺桿泵項(xiàng)目投資價(jià)值分析報(bào)告
- 2025至2030年全自動(dòng)電腦帽繡機(jī)項(xiàng)目投資價(jià)值分析報(bào)告
- 2025至2030年中國毛峰茶數(shù)據(jù)監(jiān)測研究報(bào)告
- 2025年雪糕模具項(xiàng)目可行性研究報(bào)告
- 家庭消費(fèi)心理分析-第2篇-深度研究
- 2025年眼板項(xiàng)目可行性研究報(bào)告
- 2025年特種工業(yè)面料項(xiàng)目可行性研究報(bào)告
- 人工智能輔助的語言評(píng)估-深度研究
- 2025年變壓器零部件項(xiàng)目可行性研究報(bào)告
- 《財(cái)務(wù)管理學(xué)(第10版)》課件 第5、6章 長期籌資方式、資本結(jié)構(gòu)決策
- 房屋永久居住權(quán)合同模板
- 醫(yī)院納入定點(diǎn)后使用醫(yī)療保障基金的預(yù)測性分析報(bào)告
- 初中英語不規(guī)則動(dòng)詞表(譯林版-中英)
- 2024年3月四川省公務(wù)員考試面試題及參考答案
- 新生兒黃疸早期識(shí)別課件
- 醫(yī)藥營銷團(tuán)隊(duì)建設(shè)與管理
- 二年級(jí)數(shù)學(xué)上冊(cè)口算題100道(全冊(cè)完整)
- 冷軋工程專業(yè)詞匯匯編注音版
- 小升初幼升小擇校畢業(yè)升學(xué)兒童簡歷
- 第一單元(金融知識(shí)進(jìn)課堂)課件
評(píng)論
0/150
提交評(píng)論