![《Python程序設(shè)計(jì)》 課件 項(xiàng)目11 模塊應(yīng)用_第1頁(yè)](http://file4.renrendoc.com/view12/M01/1F/12/wKhkGWeOWFuACF0uAAIcuQ2-Wxc283.jpg)
![《Python程序設(shè)計(jì)》 課件 項(xiàng)目11 模塊應(yīng)用_第2頁(yè)](http://file4.renrendoc.com/view12/M01/1F/12/wKhkGWeOWFuACF0uAAIcuQ2-Wxc2832.jpg)
![《Python程序設(shè)計(jì)》 課件 項(xiàng)目11 模塊應(yīng)用_第3頁(yè)](http://file4.renrendoc.com/view12/M01/1F/12/wKhkGWeOWFuACF0uAAIcuQ2-Wxc2833.jpg)
![《Python程序設(shè)計(jì)》 課件 項(xiàng)目11 模塊應(yīng)用_第4頁(yè)](http://file4.renrendoc.com/view12/M01/1F/12/wKhkGWeOWFuACF0uAAIcuQ2-Wxc2834.jpg)
![《Python程序設(shè)計(jì)》 課件 項(xiàng)目11 模塊應(yīng)用_第5頁(yè)](http://file4.renrendoc.com/view12/M01/1F/12/wKhkGWeOWFuACF0uAAIcuQ2-Wxc2835.jpg)
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
模塊應(yīng)用理解模塊、包的概念01了解模塊的分類(lèi)02理解模塊的作用03知識(shí)目標(biāo)熟悉自定義模塊的方法04了解常見(jiàn)的第三方模塊05能夠掌握模塊的調(diào)用01能夠完成模塊的制作02能夠使用Python包來(lái)組織模塊03能力目標(biāo)能夠熟練掌握模塊的發(fā)布和安裝04能夠?qū)氩⒄{(diào)用第三方模塊05任務(wù)提出01任務(wù)分析02知識(shí)準(zhǔn)備03任務(wù)1簡(jiǎn)單網(wǎng)絡(luò)爬蟲(chóng)任務(wù)實(shí)現(xiàn)04任務(wù)總結(jié)05任務(wù)1打印樹(shù)形圖案任務(wù)提出Part.01任務(wù)提出Part.01任務(wù)提出運(yùn)用PyCharm開(kāi)發(fā)工具編寫(xiě)Python程序,對(duì)網(wǎng)頁(yè)內(nèi)容進(jìn)行爬取,并分析出其中的關(guān)鍵詞。以新聞《國(guó)務(wù)院辦公廳關(guān)于進(jìn)一步做好高校畢業(yè)生等青年就業(yè)創(chuàng)業(yè)工作的通知》為例。任務(wù)提出爬取該文的內(nèi)容,分析出關(guān)鍵詞出現(xiàn)的頻率,如圖所示。任務(wù)分析Part.02任務(wù)分析1.下載并安裝第三方包requests、jieba、lxml、bs4。2.創(chuàng)建Python程序webcrawler.py。3.導(dǎo)入requests、jieba、bs4。4.獲取目標(biāo)URL的HTML文檔。5.提取出全部頁(yè)面內(nèi)容存入TXT文件中。6.用精確模式對(duì)頁(yè)面內(nèi)容進(jìn)行分詞處理。7.統(tǒng)計(jì)每個(gè)分詞出現(xiàn)的個(gè)數(shù)。8.按分詞個(gè)數(shù)進(jìn)行降序排序,輸出前10個(gè)分詞作為關(guān)鍵字。9.運(yùn)行測(cè)試程序,查看輸出的關(guān)鍵字及其個(gè)數(shù)。本任務(wù)主要實(shí)現(xiàn)的是網(wǎng)頁(yè)內(nèi)容的爬取及關(guān)鍵詞分析,可以借助第三方模塊requestsjieba等來(lái)獲取頁(yè)面內(nèi)容、提取關(guān)鍵字。具體的任務(wù)實(shí)施分析如下:知識(shí)準(zhǔn)備Part.03模塊簡(jiǎn)介01模塊導(dǎo)入02自定義模塊03知識(shí)準(zhǔn)備包04常用庫(kù)05模塊簡(jiǎn)介Part.01Python模塊(Module),是一個(gè)Python文件,以.py結(jié)尾,包含了Python對(duì)象定義和Python語(yǔ)句。模塊的概念每一個(gè)以擴(kuò)展名py結(jié)尾的python源代碼文件都是一個(gè)模塊。模塊名同樣也是一個(gè)標(biāo)識(shí)符,需要符合標(biāo)識(shí)符的命名規(guī)范。在模塊中定義的全局變量、函數(shù)、類(lèi)都可以提供給其他代碼調(diào)用。通過(guò)使用模塊,可以將代碼分離成邏輯單元,促進(jìn)模塊化編程。Python中的模塊供分為三類(lèi),即內(nèi)置模塊、第三方模塊、以及自定義模塊。內(nèi)置模塊:內(nèi)置模塊是Python官方開(kāi)發(fā)者幫我們?cè)O(shè)計(jì)好的,安裝好Python環(huán)境我們就可以直接使用這些內(nèi)置模塊。模塊的分類(lèi)常用的內(nèi)置模塊有:os:包含普遍的操作系統(tǒng)功能sys:提供了一系列有關(guān)Python運(yùn)行環(huán)境的變量和函數(shù)random:用于生成隨機(jī)數(shù)time::主要包含各種提供日期、時(shí)間功能的類(lèi)和函數(shù)第三方模塊:第三方模塊是Python開(kāi)發(fā)者提前開(kāi)發(fā)好的模塊,需要安裝對(duì)應(yīng)的庫(kù)才能使用該模塊中的函數(shù)等。模塊的分類(lèi)常用的第三方模塊有:requests:常用的http模塊,常用于發(fā)送http請(qǐng)求scrapy:在網(wǎng)絡(luò)爬蟲(chóng)領(lǐng)域必不可少pygame:常用于2D游戲的開(kāi)發(fā)numpy:為Python提供了很多高級(jí)的數(shù)學(xué)方法Flask:輕量級(jí)開(kāi)源Web開(kāi)發(fā)框架,靈活、開(kāi)發(fā)周期短Django:一站式開(kāi)源Web開(kāi)發(fā)框架,遵循MVC設(shè)計(jì)自定義模塊:自定義模塊是開(kāi)發(fā)者根據(jù)實(shí)際需求開(kāi)發(fā)的模塊,通常是對(duì)某段邏輯或某些函數(shù)進(jìn)行封裝,供其他函數(shù)調(diào)用,使用時(shí)我們需要將其引入到我們的項(xiàng)目中。模塊的分類(lèi)
需要注意的是,自定義模塊的命名一定不能與內(nèi)置模塊重名,否則會(huì)將內(nèi)置模塊覆蓋。模塊的導(dǎo)入Part.02導(dǎo)入整個(gè)模塊模塊的導(dǎo)入通過(guò)import關(guān)鍵字可以將整個(gè)模塊導(dǎo)入進(jìn)來(lái),導(dǎo)入后可以通過(guò)模塊名來(lái)訪(fǎng)問(wèn)其中的函數(shù)、類(lèi)和變量導(dǎo)入整個(gè)模塊使用import語(yǔ)句導(dǎo)入語(yǔ)法格式是:模塊名.函數(shù)名()/類(lèi)名使用import語(yǔ)句導(dǎo)入的語(yǔ)法格式是:import模塊1[,模塊2[,...模塊3]]import語(yǔ)句支持一次導(dǎo)入多個(gè)模塊,每個(gè)模塊中間用逗號(hào)分割,導(dǎo)入之后可以通過(guò)“.”來(lái)使用模塊中的函數(shù)或類(lèi)。導(dǎo)入整個(gè)模塊例:使用import語(yǔ)句導(dǎo)入語(yǔ)法格式是:模塊名.函數(shù)名()/類(lèi)名importtime
#導(dǎo)入模塊timeimportrandom,math
#導(dǎo)入模塊random、mathtime.sleep(1)
#調(diào)用time模塊中的sleep()函數(shù)random.randint(1,100)#調(diào)用random模塊中的randint()函數(shù)math.sqrt(2)
#調(diào)用math模塊中的sqrt()函數(shù)從模塊中導(dǎo)入特定成員模塊的導(dǎo)入可以使用from...import語(yǔ)句從模塊中導(dǎo)入特定成員,即可以導(dǎo)入模塊中特定的函數(shù)、類(lèi)或變量,而不是整個(gè)模塊從模塊中導(dǎo)入特定成員使用from...import...語(yǔ)句導(dǎo)入語(yǔ)法格式是:from模塊名import*使用import語(yǔ)句導(dǎo)入的語(yǔ)法格式是:from模塊名import函數(shù)/類(lèi)/變量from...import...語(yǔ)句也支持一次導(dǎo)入多個(gè)函數(shù)、類(lèi)和變量,多個(gè)函數(shù)、類(lèi)和變量之間用逗號(hào)隔開(kāi)。如果使用通配符*,可以導(dǎo)入該模塊的全部?jī)?nèi)容。從模塊中導(dǎo)入特定成員例:使用from...import語(yǔ)句導(dǎo)入特定成員語(yǔ)法格式是:模塊名.函數(shù)名()/類(lèi)名frommathimportsqrt#導(dǎo)入math模塊中的sqrt()函數(shù)#直接使用函數(shù),無(wú)需模塊名前綴print(sqrt(16))#輸出:4.0導(dǎo)入模塊中的所有成員模塊的導(dǎo)入使用from...import*語(yǔ)句,可以導(dǎo)入該模塊的所有成員。但是,通常不推薦使用這種方法進(jìn)行導(dǎo)入,因?yàn)樗赡軐?dǎo)致命名沖突,使代碼難以理解和維護(hù)。導(dǎo)入模塊所有成員例:導(dǎo)入模塊所有成員語(yǔ)法格式是:模塊名.函數(shù)名()/類(lèi)名frommathimport*print(sqrt(9))#輸出:3.0使用as關(guān)鍵字為模塊或成員指定別名模塊的導(dǎo)入當(dāng)模塊名或成員名與現(xiàn)有名稱(chēng)沖突,或者名稱(chēng)太長(zhǎng)不便使用時(shí),可以使用as關(guān)鍵字為它們指定別名。使用as關(guān)鍵字為模塊或成員指定別名例:使用as關(guān)鍵字為模塊或成員指定別名語(yǔ)法格式是:模塊名.函數(shù)名()/類(lèi)名importmathasm#使用別名訪(fǎng)問(wèn)模塊中的函數(shù)print(m.sqrt(9))#輸出:3.0#為導(dǎo)入的函數(shù)指定別名frommathimportsqrtassqprint(sq(9))#輸出:3.0導(dǎo)入自定義模塊模塊的導(dǎo)入如果創(chuàng)建了自定義模塊(.py文件),并且該模塊位于當(dāng)前工作目錄或Python的搜索路徑中,則可以像導(dǎo)入標(biāo)準(zhǔn)模塊一樣導(dǎo)入該模塊。導(dǎo)入自定義模塊例:導(dǎo)入自定義模塊語(yǔ)法格式是:模塊名.函數(shù)名()/類(lèi)名#假設(shè)在當(dāng)前工作目錄下存在自定義模塊mymodule.pyimportmymodulemymodule.fun()#調(diào)用模塊中的函數(shù)設(shè)置搜索路徑在python中使用import語(yǔ)句導(dǎo)入模塊時(shí),會(huì)從當(dāng)前工作目錄或者搜索路徑中查找模塊,搜索路徑由sys.path列表控制,可以通過(guò)設(shè)置這個(gè)列表來(lái)添加或刪除搜索路徑。設(shè)置搜索路徑1.在代碼中動(dòng)態(tài)修改語(yǔ)法格式是:模塊名.函數(shù)名()/類(lèi)名在Python代碼中直接動(dòng)態(tài)修改列表sys.path的值importsyssys.path.append('/path/directory')在列表的開(kāi)頭添加路徑,可以使用insert方法sys.path.insert(0,'/path/directory')設(shè)置搜索路徑2.使用環(huán)境變量設(shè)置語(yǔ)法格式是:模塊名.函數(shù)名()/類(lèi)名可以通過(guò)使用PYTHONPATH環(huán)境變量來(lái)設(shè)置搜索路徑,在不同的目錄之間用逗號(hào)分隔。在Windows系統(tǒng)中,設(shè)置命令如下:setPYTHONPATH=D:\path\directory;%PYTHONPATH%設(shè)置搜索路徑3.使用.pth文件設(shè)置語(yǔ)法格式是:模塊名.函數(shù)名()/類(lèi)名可以在Python安裝路徑下Lib\site-packages文件夾中創(chuàng)建一個(gè)擴(kuò)展名為.pth的文件,將所有的模塊搜索路徑添加進(jìn)去,每個(gè)路徑占一行。.pth文件內(nèi)容示例如下:D:\Chapter11D:\Chapter11\DirD:\Chapter11\Dir\Dir自定義模塊Part.03Python自定義模塊是一種由用戶(hù)創(chuàng)建的Python代碼文件,用于組織、封裝和重用可執(zhí)行的代碼塊。通過(guò)自定義模塊,用戶(hù)可以將相關(guān)的功能和變量組織在一起,使代碼更易于維護(hù)、擴(kuò)展和復(fù)用。自定義模塊Python中每個(gè)文件都可以作為一個(gè)模塊,文件名即為模塊名。自定義模塊對(duì)應(yīng)的Python文件應(yīng)存放在當(dāng)前工作目錄或者Python的搜索路徑中,否則在導(dǎo)入時(shí)應(yīng)聲明路徑文件夾。自定義模塊例:自定義模塊mymodule,步驟如下:1)在當(dāng)前工作目錄中創(chuàng)建Python文件mymodule.py,作為模塊文件。在模塊文件mymodule.py中定義變量age和函數(shù)intro()#mymodule.pyage=13defintro():print("我今年%d歲了。"%age)自定義模塊2)在當(dāng)前工作目錄中創(chuàng)建新的Python文件myage.py,導(dǎo)入自定義模塊mymodule,并調(diào)用intro()函數(shù)#myage.pyimportmymodulero()自定義模塊3)運(yùn)行程序myage.py,輸出結(jié)果如下:我今年13歲了。自定義模塊導(dǎo)入模塊后,還可以使用dir()函數(shù)查看導(dǎo)入模塊中包含的函數(shù)、類(lèi)和變量。importmymodule#導(dǎo)入mymodule模塊print(dir(mymodule))#使用dir()函數(shù)運(yùn)行代碼,輸出結(jié)果如下:['__builtins__','__cached__','__doc__','__file__','__loader__','__name__','__package__','__spec__','age','intro']自定義模塊__builtins__:對(duì)Python內(nèi)置模塊的引用,該模塊在Python啟動(dòng)后首先加載,該模塊中的函數(shù)即內(nèi)置函數(shù),可以直接調(diào)用。__cached__:當(dāng)前模塊經(jīng)過(guò)編譯后生成的字節(jié)碼文件(.pyc)的路徑。__doc__:當(dāng)前模塊的文檔字符串。__file__:當(dāng)前模塊的完整文件路徑。模塊交互式可能未定義__file__。__loader__:用于加載模塊的加載器。__name__:當(dāng)前模塊的名字。如果模塊被直接運(yùn)行,那么__name__的值會(huì)是"__main__"。如果模塊是被導(dǎo)入的,那么__name__的值會(huì)是模塊的名字。__package__:當(dāng)前模塊所在的包名。如果沒(méi)有定義包,那么__package__值是None。__spec__:當(dāng)前模塊的規(guī)范,包括名稱(chēng)、加載器、源文件等。內(nèi)置全局變量__all__屬性特殊屬性__all__是一個(gè)可選的列表,定義在模塊文件的頂層。當(dāng)使用from…import*語(yǔ)句導(dǎo)入模塊成員時(shí),__all__列表決定了哪些成員會(huì)被導(dǎo)入。如果沒(méi)有定義__all__屬性,那么使用from…import*語(yǔ)句將不會(huì)導(dǎo)入任何成員。使用__all__屬性是一種顯式控制模塊導(dǎo)出內(nèi)容的好方法,可以避免在from…import*時(shí)導(dǎo)入不必要的名字,減少命名沖突的風(fēng)險(xiǎn)。__all__屬性特殊屬性例:
使用__all__屬性1)創(chuàng)建模塊文件mymodule1.py,輸入如下代碼#mymodule1.py__all__=['add']#列表中包含add()函數(shù),不包括subtract()函數(shù)defadd(a,b):returna+bdefsubtract(a,b):returna-b__all__屬性特殊屬性例:
使用__all__屬性2)創(chuàng)建Python文件test.py,輸入如下代碼:#test.pyfrommymodule1import*#導(dǎo)入模塊mymodule1中的全部成員print(add(10,11))#調(diào)用函數(shù)add()print(subtract(22,5))#調(diào)用函數(shù)subtract()__all__屬性特殊屬性例:
使用__all__屬性3)運(yùn)行代碼文件test.py,結(jié)果如下所示:21NameError:name'subtract'isnotdefined從運(yùn)行結(jié)果可以看出,調(diào)用add()函數(shù)能正確輸出結(jié)果21,調(diào)用subtract()函數(shù)則出現(xiàn)函數(shù)未定義的異常。__name__屬性特殊屬性__name__是一個(gè)內(nèi)置屬性,它表示當(dāng)前模塊的名字。當(dāng)模塊被直接運(yùn)行時(shí),__name__的值被設(shè)置為"__main__"。而當(dāng)模塊被導(dǎo)入到其他模塊時(shí),__name__的值則是模塊自身的名字。__name__屬性經(jīng)常用于區(qū)分模塊是直接運(yùn)行還是被導(dǎo)入,以便執(zhí)行不同的代碼塊。__name__屬性特殊屬性例:
使用__name__屬性1)創(chuàng)建模塊文件mymodule2.py,輸入如下代碼#mymodule2.pydeffunc():print("這是模塊直接運(yùn)行.")if__name__=="__main__":func()#在模塊被直接運(yùn)行時(shí)執(zhí)行else:print("這是模塊被導(dǎo)入后運(yùn)行的.")#在模塊被導(dǎo)入時(shí)執(zhí)行__name__屬性特殊屬性例:
使用__name__屬性2)直接運(yùn)行模塊文件mymodule2.py,輸出結(jié)果如下:這是模塊直接運(yùn)行.3)創(chuàng)建Python文件test1.py,輸入如下代碼:#test1.pyimportmymodule24)運(yùn)行代碼文件test1.py,輸出結(jié)果如下:這是模塊被導(dǎo)入后運(yùn)行的.包Part.04Python中的包是一種有層次的文件目錄結(jié)構(gòu),它定義了由多個(gè)模塊或子包組成的Python應(yīng)用程序執(zhí)行環(huán)境。包的主要目的是為了提供一種層次化的組織結(jié)構(gòu),以便更好地組織和管理Python代碼。通過(guò)包可以將相關(guān)的模塊和子包組織在一起,從而更好地管理和復(fù)用代碼。包包是一個(gè)包含__init__.py文件的目錄,該目錄下包含__init__.py文件和其它模塊或子包。__init__.py文件可以是一個(gè)空文件,也可以包含一些初始化代碼,但必須存在,否則包將成為一個(gè)普通的目錄。創(chuàng)建包創(chuàng)建目錄mypackage作為包目錄,在包目錄中創(chuàng)建包定義文件__init__.py,并將前面創(chuàng)建的模塊復(fù)制到該目錄中,結(jié)構(gòu)如圖所示。__init__.py文件在Python包中的主要作用如下:標(biāo)識(shí)目錄為Python包:當(dāng)目錄包含__init__.py文件時(shí),Python會(huì)將該目錄視為包。初始化包:__init__.py文件可以在包被導(dǎo)入時(shí)執(zhí)行一些初始化代碼,比如設(shè)置包的全局狀態(tài),或者執(zhí)行一些只需要在包被首次導(dǎo)入時(shí)運(yùn)行的操作。定義__all__:定義__all__列表以決定哪些模塊或?qū)ο髸?huì)被導(dǎo)入。如果__all__沒(méi)有被定義,那么frompackageimport*將不會(huì)導(dǎo)入任何內(nèi)容。簡(jiǎn)化模塊的導(dǎo)入:在__init__.py文件中,可以導(dǎo)入包內(nèi)的其他模塊,并為其設(shè)置別名,這樣用戶(hù)就可以通過(guò)包名直接訪(fǎng)問(wèn)這些模塊,而不需要知道實(shí)際路徑,有助于簡(jiǎn)化模塊的導(dǎo)入和使用。包級(jí)別的變量和函數(shù):__init__.py文件也可以定義包級(jí)別的變量和函數(shù),這些變量和函數(shù)可以直接通過(guò)包名來(lái)訪(fǎng)問(wèn)。創(chuàng)建包例:編輯包mypackage的__init__.py文件#mypackage/__init__.pyfrom.importmymodule#導(dǎo)入整個(gè)模塊mymodulefrom.mymodule1importaddassum#只導(dǎo)入模塊mymodule1的特定函數(shù),并設(shè)置別名__all__=['mymodule','sum']#定義__all__來(lái)控制frompackageimport*的行為package_a="這是包級(jí)別變量"#定義包級(jí)別變量defpackage_func():#定義包級(jí)別函數(shù)
print("這是包級(jí)別函數(shù)")創(chuàng)建包在Python中,包的導(dǎo)入本質(zhì)上是執(zhí)行導(dǎo)入包中的__init__.py文件。當(dāng)嘗試導(dǎo)入一個(gè)包時(shí),Python會(huì)根據(jù)sys.path中的目錄來(lái)尋找包中包含的子目錄。因此,確保包所在的目錄在sys.path中,或者包已經(jīng)被安裝到Python的site-packages目錄下,這樣才能正確導(dǎo)入包。導(dǎo)入包例:導(dǎo)入mypackage包importmypackage#導(dǎo)入整個(gè)包ro()#調(diào)用模塊mymodule的intro()函數(shù)print(mypackage.sum(2,3))#通過(guò)別名sum調(diào)用模塊mymodule1中的add()函數(shù)print(mypackage.package_a)#訪(fǎng)問(wèn)包級(jí)別的變量mypackage.package_func()#調(diào)用包級(jí)別的函數(shù)導(dǎo)入包例:導(dǎo)入mypackage包frommypackageimportmymodule,sum,package_a,package_func#使用導(dǎo)入的部分ro()#調(diào)用模塊mymodule的intro()函數(shù)print(sum(2,3))#通過(guò)別名sum調(diào)用模塊mymodule1中的add()函數(shù)print(package_a)package_func()導(dǎo)入包1.使用pip命令安裝第三方包pip是Python的包管理工具,它允許從PythonPackageIndex(PyPI)安裝和管理額外的庫(kù)和依賴(lài)。命令格式如下:pipinstallpackage_name[==version]package_name為第三方包的名稱(chēng),version表示特定版本的包,可忽略。1.使用pip命令安裝第三方包如果使用pip安裝時(shí)速度較慢,可以選擇國(guó)內(nèi)的鏡像源進(jìn)行加速,比如清華大學(xué)開(kāi)源軟件鏡像站、阿里云鏡像源等。比如使用清華大學(xué)開(kāi)源軟件鏡像站下載requests包,方法如下:pipinstallrequests-i/simple2.從PyPI或第三方網(wǎng)站下載.whl或.tar.gz文件安裝第三方包如果無(wú)法直接通過(guò)pip安裝某個(gè)包,可以嘗試從PyPI或第三方網(wǎng)站下載對(duì)應(yīng)的.whl或.tar.gz文件,然后使用pip進(jìn)行安裝。下載好文件后,打開(kāi)終端或命令提示符窗口,進(jìn)入文件所在的目錄,然后運(yùn)行以下命令:pipinstallpackage_name.whl或pipinstallpackage_name.tar.gz3.
PyCharm開(kāi)發(fā)環(huán)境中安裝第三方包打開(kāi)PyCharm,選擇菜單項(xiàng)File→Settings→Project:project_name→PythonInterpreter,點(diǎn)擊包列表左上角的“+”按鈕,然后在彈出的搜索框中輸入要安裝的包名,點(diǎn)擊InstallPackage即可。常用庫(kù)Part.05Python社區(qū)系統(tǒng)還提供了很多優(yōu)秀的第三方庫(kù),這些庫(kù)為開(kāi)發(fā)者提供了各種擴(kuò)展功能和工具,以便更高效地編寫(xiě)代碼。以下是一些Python中常見(jiàn)的第三方庫(kù):numpy:支持大量的維度數(shù)組與矩陣運(yùn)算,針對(duì)數(shù)組運(yùn)算提供大量的數(shù)學(xué)函數(shù)庫(kù)。pandas:提供數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)分析工具的庫(kù),使得在Python中進(jìn)行數(shù)據(jù)操作更加簡(jiǎn)單和直觀(guān)。matplotlib:用于創(chuàng)建二維圖表和繪圖的庫(kù),可以生成折線(xiàn)圖、散點(diǎn)圖、柱狀圖等。seaborn:基于Matplotlib的可視化庫(kù),專(zhuān)注于統(tǒng)計(jì)數(shù)據(jù)可視化。scikit-learn:用于機(jī)器學(xué)習(xí)的Python庫(kù),提供了機(jī)器學(xué)習(xí)算法和工具,如分類(lèi)、回歸、聚類(lèi)等。tensorflow:由Google開(kāi)發(fā)的開(kāi)源機(jī)器學(xué)習(xí)框架,用于各種機(jī)器學(xué)習(xí)應(yīng)用。常用庫(kù)Python社區(qū)系統(tǒng)還提供了很多優(yōu)秀的第三方庫(kù),這些庫(kù)為開(kāi)發(fā)者提供了各種擴(kuò)展功能和工具,以便更高效地編寫(xiě)代碼。以下是一些Python中常見(jiàn)的第三方庫(kù):tensorflow:由Google開(kāi)發(fā)的開(kāi)源機(jī)器學(xué)習(xí)框架,用于各種機(jī)器學(xué)習(xí)應(yīng)用。pytorch:Facebook開(kāi)發(fā)的開(kāi)源深度學(xué)習(xí)和機(jī)器學(xué)習(xí)的庫(kù)。sciPy:用于數(shù)學(xué)、科學(xué)和工程的庫(kù),包括統(tǒng)計(jì)、優(yōu)化、積分、插值等功能。requests:用于發(fā)送HTTP請(qǐng)求的庫(kù)。jieba:開(kāi)源的中文分詞工具庫(kù)。beautifulsoup:用于解析HTML和XML文檔的庫(kù),它提供了一些簡(jiǎn)單和Pythonic的方法來(lái)提取和操作HTML和XML數(shù)據(jù)。常用庫(kù)requests庫(kù)是一個(gè)非常流行的第三方HTTP客戶(hù)端庫(kù),用于發(fā)送HTTP請(qǐng)求。使用requests庫(kù)可以更方便地訪(fǎng)問(wèn)網(wǎng)絡(luò)資源,并處理響應(yīng)數(shù)據(jù)。requests庫(kù)支持HTTP連接保持和連接池,支持使用cookie保持會(huì)話(huà),支持文件上傳,支持自動(dòng)確定響應(yīng)內(nèi)容的編碼,支持國(guó)際化的URL和POST數(shù)據(jù)自動(dòng)編碼requests庫(kù)requests庫(kù)的主要方法如下:get(url):用于向指定url發(fā)送get請(qǐng)求。post(url,data):用于向指定url發(fā)送帶數(shù)據(jù)的post請(qǐng)求。put(url,data):用于向指定url發(fā)送帶數(shù)據(jù)的put請(qǐng)求。patch(url,data):用于向指定url發(fā)送帶數(shù)據(jù)的patch請(qǐng)求。delete(url):用于向指定url發(fā)送delete請(qǐng)求。head(url):用于向指定url發(fā)送head請(qǐng)求。options(url):用于向指定url發(fā)送options請(qǐng)求。request(method,url,**kwargs):用于使用指定的HTTP方法向指定url發(fā)送請(qǐng)求,并使用其他可選參數(shù)。requests庫(kù)例:調(diào)用get()方法,示例代碼importrequests#需要先下載安裝requestsresponse=requests.get('')#發(fā)送GET請(qǐng)求ifresponse.status_code==200:#檢查請(qǐng)求是否成功
content=response.text#讀取響應(yīng)內(nèi)容
print(content)else:print(f"請(qǐng)求失敗,狀態(tài)碼:{response.status_code}")headers=response.headers#獲取響應(yīng)頭print(headers)encoding=response.encoding#獲取編碼方式print(encoding)requests庫(kù)jieba(結(jié)巴)庫(kù)是一個(gè)開(kāi)源的中文分詞工具,用于將中文文本切分成詞語(yǔ)或詞匯單位。它廣泛用于自然語(yǔ)言處理(NLP)和文本分析領(lǐng)域。jieba分詞庫(kù)具備多種特點(diǎn)和功能,包括中文分詞、多種分詞模式、自定義詞典、高效快速以及關(guān)鍵詞提取等。jieba庫(kù)jieba庫(kù)分詞的原理:jieba庫(kù)利用一個(gè)中文詞庫(kù),確定漢字之間的關(guān)聯(lián)概率,通過(guò)計(jì)算漢字之間的概率,漢字間概率大的組成詞組,形成分詞結(jié)果。jieba庫(kù)使用了兩種算法:最大正向匹配算法和基于隱馬爾可夫模型(HiddenMarkovModel,HMM)的Viterbi算法。jieba庫(kù)jieba庫(kù)分詞的原理:jieba分詞采用最大正向匹配算法來(lái)確定每個(gè)詞的邊界位置。這種算法從左到右掃描待分詞文本,根據(jù)最長(zhǎng)的匹配原則來(lái)確定當(dāng)前詞的邊界。具體而言,算法從文本開(kāi)頭開(kāi)始,根據(jù)詞典中的詞語(yǔ)長(zhǎng)度依次匹配文本,選擇最長(zhǎng)的匹配詞語(yǔ)作為分詞結(jié)果,然后繼續(xù)在未匹配部分進(jìn)行匹配,直到整個(gè)文本被分詞完畢。在這個(gè)過(guò)程中,jieba分詞還會(huì)根據(jù)詞頻信息來(lái)處理歧義,對(duì)于多個(gè)可能的詞語(yǔ)組合,jieba分詞會(huì)選擇出現(xiàn)頻率更高的組合作為最終的分詞結(jié)果。jieba庫(kù)jieba庫(kù)分詞的原理:隱馬爾可夫模型(HMM)在jieba中主要用于詞性標(biāo)注和發(fā)現(xiàn)新詞。HMM是一種統(tǒng)計(jì)模型,在jieba中,HMM被用來(lái)預(yù)測(cè)已分詞序列的詞性,即給每個(gè)詞分配一個(gè)最可能的詞性標(biāo)簽。此外,HMM還能用于識(shí)別并提取文本中的新詞,這些新詞可能不在初始詞典中,但根據(jù)上下文和統(tǒng)計(jì)信息,可以被識(shí)別為有意義的詞匯單元。jieba還支持用戶(hù)自定義字典和停用詞,這使得用戶(hù)可以根據(jù)自己的特定需求定制分詞過(guò)程。jieba庫(kù)jieba庫(kù)的分詞模式:精確模式(默認(rèn)模式):該模式會(huì)將文本完全分詞,即將文本分成最多的詞語(yǔ)。它把文本精確的切分開(kāi),不存在冗余單詞。全模式:把文本中所有可能的詞語(yǔ)都掃描出來(lái),有冗余單詞出現(xiàn)。表示對(duì)同一個(gè)文本從不同的角度來(lái)切分,變成不同的詞語(yǔ)。搜索引擎模式:該模式結(jié)合了精確模式和全模式的優(yōu)點(diǎn),適用于搜索引擎的分詞,它在精確模式基礎(chǔ)上,對(duì)長(zhǎng)詞語(yǔ)再次切分。jieba庫(kù)例:精確模式分詞importjiebas="中國(guó)是一個(gè)文明古國(guó)"print(jieba.lcut(s))#調(diào)用lcut()函數(shù),返回列表數(shù)據(jù)分詞輸出結(jié)果為:['中國(guó)','是','一個(gè)','文明古國(guó)']jieba庫(kù)例:全模式分詞importjiebas="中國(guó)是一個(gè)文明古國(guó)"print(jieba.lcut(s,cut_all=True))分詞輸出結(jié)果為:['中國(guó)','國(guó)是','一個(gè)','文明','古國(guó)']jieba庫(kù)例:搜索引擎模式分詞importjiebas="中華人民共和國(guó)是文明古國(guó)"print(jieba.lcut_for_search(s))分詞輸出結(jié)果為:['中華','華人','人民','共和','共和國(guó)','中華人民共和國(guó)','是','文明','古國(guó)','文明古國(guó)']jieba庫(kù)任務(wù)實(shí)現(xiàn)Part.03分析代碼01編寫(xiě)代碼02任務(wù)實(shí)現(xiàn)1.代碼分析任務(wù)實(shí)現(xiàn)首先下載安裝第三方包requests、jieba、lxml、bs4,導(dǎo)入相應(yīng)的模塊。使用requests的get()方法獲取目標(biāo)頁(yè)面的HTML文檔。使用BeautifulSoup解析HTML文檔;提取id為"UCAP-CONTENT"的div元素中的所有span元素,span元素的text屬性即為文本內(nèi)容,將所有的文本內(nèi)容逐行存入gov.txt文件中。將gov.txt中的文本內(nèi)容讀取到內(nèi)存,使用精確模式對(duì)文本進(jìn)行分詞;遍歷所有的分詞,統(tǒng)計(jì)每個(gè)分詞出現(xiàn)的次數(shù)。定義構(gòu)建排除詞庫(kù),排除掉部分分詞。對(duì)分詞按照出現(xiàn)的次數(shù)進(jìn)行降序排列,最后輸出前10個(gè)分詞。(1)啟動(dòng)PyCharm,新建Python項(xiàng)目,位置為D:\Chapter11,新建Python文件webcrawler.Py
(2)在webcrawler.py文件的代碼編輯窗口,輸入以下代碼:編寫(xiě)代碼
importrequests#導(dǎo)入requests庫(kù)importjieba
#導(dǎo)入jieba庫(kù)frombs4importBeautifulSoup#導(dǎo)入bs4庫(kù)的BeautifulSoup類(lèi)編寫(xiě)代碼#獲取目標(biāo)網(wǎng)址的HTML文檔res=requests.get("/zhengce/content/2022-05/13/content_5690111.htm")res.encoding='utf-8'#使用BeautifulSoup解析HTML文檔soup=BeautifulSoup(res.text,'html.parser')#創(chuàng)建soup對(duì)象#查找出id為"UCAP-CONTENT"的div元素中的所有span元素,輸出span列表spans=soup.select('#UCAP-CONTENTspan')#追加模式打開(kāi)gov.txt,文件不存在則新建withopen('gov.txt','a',encoding='utf-8')asfile_handle:foriteminspans:file_handle.write(item.text)#提取每個(gè)span標(biāo)簽的text內(nèi)容寫(xiě)入gov.textfile_handle.write('\n')#添加換行符編寫(xiě)代碼txt=open("gov.txt","r",encoding='utf-8').read()#讀取gov.txt中的全部數(shù)據(jù)words=jieba.lcut(txt)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- Anti-Mouse-CD3E-Antibody-1E11-D-生命科學(xué)試劑-MCE-1878
- 8-Amino-7-oxononanoic-acid-hydrochloride-生命科學(xué)試劑-MCE-9983
- 3-O-Methylguanosine-5-O-triphosphate-sodium-3-O-Methyl-GTP-sodium-生命科學(xué)試劑-MCE-9300
- 二零二五年度大數(shù)據(jù)分析技術(shù)顧問(wèn)聘請(qǐng)協(xié)議
- 二零二五年度游樂(lè)園場(chǎng)地租賃與兒童游樂(lè)設(shè)施安全標(biāo)準(zhǔn)制定合同
- 二零二五年度房屋貸款房屋買(mǎi)賣(mài)合同范本(含家具)
- 施工現(xiàn)場(chǎng)管理制度化
- 施工方案對(duì)籃球場(chǎng)材料的要求與選擇
- 高凈值人群海外稅務(wù)籌劃與財(cái)富保護(hù)策略
- 現(xiàn)代辦公樓的安全生產(chǎn)隱患識(shí)別與處理
- 高考英語(yǔ)3500單詞表(帶音標(biāo))(亂序版)默寫(xiě)背誦通用版
- 最終稿(教學(xué)評(píng)一致)課件
- 每個(gè)孩子都能像花兒一樣開(kāi)放
- 2023年廣東省深圳市八年級(jí)下學(xué)期物理期中考試試卷
- 《詩(shī)詞寫(xiě)作常識(shí) 詩(shī)詞中國(guó)普及讀物 》讀書(shū)筆記思維導(dǎo)圖
- YS/T 34.1-2011高純砷化學(xué)分析方法電感耦合等離子體質(zhì)譜法(ICP-MS)測(cè)定高純砷中雜質(zhì)含量
- LY/T 2016-2012陸生野生動(dòng)物廊道設(shè)計(jì)技術(shù)規(guī)程
- 單縣煙草專(zhuān)賣(mài)局QC課題多維度降低行政處罰文書(shū)出錯(cuò)率
- 健康養(yǎng)生課件
- 混雜控制系統(tǒng)課件
- 運(yùn)動(dòng)技能學(xué)習(xí)原理課件
評(píng)論
0/150
提交評(píng)論