本文目錄一覽:
- 1、Python 常用的標準庫以及第三方庫有哪些
- 2、【Python基礎】python數據分析需要哪些庫?
- 3、Python繪圖之(1)Turtle庫詳解
- 4、Python解析庫lxml與xpath用法總結
- 5、常用的python庫有哪些
- 6、Python網頁解析庫:用requests-html爬取網頁
Python 常用的標準庫以及第三方庫有哪些
推薦5個常用的Python標準庫:
1、os:提供了不少與操作系統相關聯的函數庫
os包是Python與操作系統的介面。我們可以用os包來實現操作系統的許多功能,比如管理系統進程,改變當前路徑,改變文件許可權等。但要注意,os包是建立在操作系統的平台上的,許多功能在Windows系統上是無法實現的。另外,在使用os包中,要注意其中的有些功能已經被其他的包取代。
我們通過文件系統來管理磁碟上儲存的文件。查找、刪除、複製文件以及列出文件列表等都是常見的文件操作。這些功能通常可以在操作系統中看到,但現在可以通過Python標準庫中的glob包、shutil包、os.path包以及os包的一些函數等,在Python內部實現。
2、sys:通常用於命令行參數的庫
sys包被用於管理Python自身的運行環境。Python是一個解釋器,也是一個運行在操作系統上的程序。我們可以用sys包來控制這一程序運行的許多參數,比如說Python運行所能佔據的內存和CPU,Python所要掃描的路徑等。另一個重要功能是和Python自己的命令行互動,從命令行讀取命令和參數。
3、random:用於生成隨機數的庫
Python標準庫中的random函數,可以生成隨機浮點數、整數、字元串,甚至幫助你隨機選擇列表序列中的一個元素,打亂一組數據等。
4、math:提供了數學常數和數學函數
標準庫中,Python定義了一些新的數字類型,以彌補之前的數字類型可能的不足。標準庫還包含了random包,用於處理隨機數相關的功能。math包補充了一些重要的數學常數和數學函數,比如pi、三角函數等等。
5、datetime:日期和時間的操作庫
日期和時間的管理並不複雜,但容易犯錯。Python的標準庫中對日期和時間的管理頗為完善,你不僅可以進行日期時間的查詢和變換,還可以對日期時間進行運算。通過這些標準庫,還可以根據需要控制日期時間輸出的文本格式
【Python基礎】python數據分析需要哪些庫?
1.Numpy庫
是Python開源的數值計算擴展工具,提供了Python對多維數組的支持,能夠支持高級的維度數組與矩陣運算。此外,針對數組運算也提供了大量的數學函數庫,Numpy是大部分Python科學計算的基礎,具有很多功能。
2.Pandas庫
是一個基於Numpy的數據分析包,為了解決數據分析任務而創建的。Pandas中納入了大量庫和標準的數據模型,提供了高效地操作大型數據集所需要的函數和方法,使用戶能快速便捷地處理數據。
3.Matplotlib庫
是一個用在Python中繪製數組的2D圖形庫,雖然它起源於模仿MATLAB圖形命令,但它獨立於MATLAB,可以通過Pythonic和面向對象的方式使用,是Python中最出色的繪圖庫。主要用純Python語言編寫的,它大量使用Numpy和其他擴展代碼,即使對大型數組也能提供良好的性能。
4.Seaborn庫
是Python中基於Matplotlib的數據可視化工具,提供了很多高層封裝的函數,幫助數據分析人員快速繪製美觀的數據圖形,從而避免了許多額外的參數配置問題。
5.NLTK庫
被稱為使用Python進行教學和計算語言學工作的最佳工具,以及用自然語言進行遊戲的神奇圖書館。NLTK是一個領先的平台,用於構建使用人類語言數據的Python程序,它為超過50個語料庫和辭彙資源提供了易於使用的介面,還提供了一套文本處理庫,用於分類、標記化、詞幹化、解析和語義推理、NLP庫的包裝器和一個活躍的討論社區。
Python繪圖之(1)Turtle庫詳解
Turtle庫是Python語言中一個很流行的繪製圖像的函數庫,想像一個小烏龜,在一個橫軸為x、縱軸為y的坐標系原點,(0,0)位置開始,它根據一組函數指令的控制,在這個平面坐標系中移動,從而在它爬行的路徑上繪製了圖形。
畫布就是turtle為我們展開用於繪圖區域,我們可以設置它的大小和初始位置。
設置畫布大小
turtle.screensize(canvwidth=None, canvheight=None, bg=None),參數分別為畫布的寬(單位像素), 高, 背景顏色。
如:turtle.screensize(800,600, “green”)
turtle.screensize() #返回默認大小(400, 300)
turtle.setup(width=0.5, height=0.75, startx=None, starty=None),參數:width, height: 輸入寬和高為整數時, 表示像素; 為小數時, 表示佔據電腦屏幕的比例,(startx, starty): 這一坐標表示矩形窗口左上角頂點的位置, 如果為空,則窗口位於屏幕中心。
如:turtle.setup(width=0.6,height=0.6)
turtle.setup(width=800,height=800, startx=100, starty=100)
2.1 畫筆的狀態
在畫布上,默認有一個坐標原點為畫布中心的坐標軸,坐標原點上有一隻面朝x軸正方向小烏龜。這裡我們描述小烏龜時使用了兩個詞語:坐標原點(位置),面朝x軸正方向(方向), turtle繪圖中,就是使用位置方向描述小烏龜(畫筆)的狀態。
2.2 畫筆的屬性
畫筆(畫筆的屬性,顏色、畫線的寬度等)
1) turtle.pensize():設置畫筆的寬度;
2) turtle.pencolor():沒有參數傳入,返回當前畫筆顏色,傳入參數設置畫筆顏色,可以是字元串如”green”, “red”,也可以是RGB 3元組。
3) turtle.speed(speed):設置畫筆移動速度,畫筆繪製的速度範圍[0,10]整數,數字越大越快。
2.3 繪圖命令
操縱海龜繪圖有著許多的命令,這些命令可以劃分為3種:一種為運動命令,一種為畫筆控制命令,還有一種是全局控制命令。
(1) 畫筆運動命令
(2) 畫筆控制命令
(3) 全局控制命令
(4) 其他命令
3. 命令詳解
3.1 turtle.circle(radius, extent=None, steps=None)
描述:以給定半徑畫圓
參數:
radius(半徑):半徑為正(負),表示圓心在畫筆的左邊(右邊)畫圓;
extent(弧度) (optional);
steps (optional) (做半徑為radius的圓的內切正多邊形,多邊形邊數為steps)。
舉例:
circle(50) # 整圓;
circle(50,steps=3) # 三角形;
circle(120, 180) # 半圓
實例:
1、太陽花
2、五角星
3、時鐘程序
Python解析庫lxml與xpath用法總結
本文主要圍繞以xpath和lxml庫進行展開:
一、xpath 概念、xpath節點、xpath語法、xpath軸、xpath運算符
二、lxml的安裝、lxml的使用、lxml案例
一、xpath
1.xpath概念
XPath 是一門在 XML 文檔中查找信息的語言。XPath 使用路徑表達式在 XML 文檔中進行導航 。XPath 包含一個標準函數庫 。XPath 是 XSLT 中的主要元素 。XPath 是一個 W3C 標準 。
2.xpath節點
xpath有七種類型的節點:元素、屬性、文本、命名空間、處理指令、注釋以及文檔(根)節點。
節點關係:父、子、兄弟、先輩、後輩。
3.xpath語法
xpath語法在W3c網站上有詳細的介紹,這裡截取部分知識,供大家學習。
XPath 使用路徑表達式在 XML 文檔中選取節點。節點是通過沿著路徑或者 step 來選取的。下面列出了最有用的路徑表達式:
在下面的表格中,我們已列出了一些路徑表達式以及表達式的結果:
謂語用來查找某個特定的節點或者包含某個指定的值的節點。
謂語被嵌在方括弧中。
在下面的表格中,我們列出了帶有謂語的一些路徑表達式,以及表達式的結果:
XPath 通配符可用來選取未知的 XML 元素。
在下面的表格中,我們列出了一些路徑表達式,以及這些表達式的結果:
通過在路徑表達式中使用”|”運算符,您可以選取若干個路徑。
在下面的表格中,我們列出了一些路徑表達式,以及這些表達式的結果:
4.xpath 軸
軸可定義相對於當前節點的節點集。
5.xpath運算符
下面列出了可用在 XPath 表達式中的運算符:
好了,xpath的內容就這麼多了。接下來我們要介紹一個神器lxml,他的速度很快,曾經一直是我使用beautifulsoup時最鍾愛的解析器,沒有之一,因為他的速度的確比其他的html.parser 和html5lib快了許多。
二、lxml
1.lxml安裝
lxml 是一個xpath格式解析模塊,安裝很方便,直接pip install lxml 或者easy_install lxml即可。
2.lxml 使用
lxml提供了兩種解析網頁的方式,一種是你解析自己寫的離線網頁時,另一種 則是解析線上網頁。
導入包:
1.解析離線網頁:
2.解析在線網頁:
那麼我們怎麼獲取這些標籤和標籤對應的屬性值了,很簡單,首先獲取標籤只需你這樣做:
然後我們可以,比方說,你要獲取a標籤內的文本和它的屬性href所對應的值,有兩種方法,
1.表達式內獲取
2.表達式外獲取
這樣就完成了獲取,怎麼樣,是不是很簡單了,哈哈哈。
下面再來lxml的解析規則:
3.lxml案例
為了偷懶,我決定還是採用urllib那篇文章的代碼,哈哈哈,機智如我。
常用的python庫有哪些
10個頂級且實用的python庫
1、Dash
Dash是比較新的軟體包,它是用純python構建數據可視化app的理想選擇,因此特別適合處理數據的任何人。Dash是Flask、Plotly.js和React.js的混合體。
2、Pygame
Pygame是SDL多媒體庫的python裝飾器,SDL是一個跨平台開發庫,旨在提供對以下內容的低級介面:音頻、鍵盤、滑鼠、遊戲桿、基於OpenGL和Direct3D的圖形硬體。
Pygame具有高度的可移植性,幾乎可以在所有平台和操作系統上運行。儘管它具有完善的遊戲引擎,但您也可以使用此庫直接從python腳本播放MP3文件。
3、Pillow
Pillow專門用於處理圖像,您可以使用該庫創建縮略圖,在文件格式之間轉換、旋轉、應用濾鏡、顯示圖像等等。如果您需要對許多圖像執行批量操作,這是理想的選擇。
4、Colorama
Colorama允許你在終端使用顏色,非常適合python腳本,文檔簡短而有趣,可以在Colorama PyPi頁面上找到。
5、JmesPath
在python中使用JSON非常容易,因為JSON在python字典上的映射非常好。此外,python帶有自己出色的json庫,用於解析和創建JSON。對我來說,這是它最好的功能之一,如果我需要使用JSON,可以考慮使用python。
JmesPath使python處理JSON更加容易,它允許您明確地指定如何從JSON文檔中提取元素。
6、Requests
Requests建立在世界上下載量最大的python庫urllib3上,它令Web請求變得非常簡單,功能強大且用途廣泛。
Requests可以完成您能想到的所有高級工作,比如:認證,使用cookie,執行POST、PUT、DELETE等,使用自定義證書,使用會話Session、使用代理等。
7、Simplejson
python中的本地json模塊有什麼問題?沒有!實際上,python的json是Simplejson。意思是:python採用了Simplejson的一個版本,並將其合併到每個發行版中,但是使用Simplejson具有一些優點:它適用於更多python版本、它比python隨附的版本更新頻率更高、它具有用C編寫的部分,因此非常快速。
8、Emoji
Emoji庫非常意思,但並非每個人都喜歡錶情包,分析視角媒體數據時,Emoji包非常有用。
9、Python-dateutil
Python-dateutil模塊提供了對標準datetime模塊的強大擴展。我的經驗是:常規的python日期時間功能在哪裡結束,而Python-dateutil就出現了。
10、BeautifulSoup
如果您從網站上提取了一些HTML,則需要對其進行解析以獲取實際所需的內容。BeautifulSoup是一個python庫,用於從HTML和XML文件中提取數據。它提供了導航,搜索和修改解析樹的簡單方法。它非常強大,即使損壞了,也能夠處理各種HTML,這是一個非常強大的功能。
它的一些主要功能:
①BeautifulSoup會自動將傳入文檔轉換為Unicode,將傳出文檔轉換為UTF-8,您無需考慮編碼。
②BeautifulSoup位於流行的python解析器的頂部,使您可以嘗試不同的解析策略或提高靈活性。
Python網頁解析庫:用requests-html爬取網頁
Python 中可以進行網頁解析的庫有很多,常見的有 BeautifulSoup 和 lxml 等。在網上玩爬蟲的文章通常都是介紹 BeautifulSoup 這個庫,我平常也是常用這個庫,最近用 Xpath 用得比較多,使用 BeautifulSoup 就不大習慣,很久之前就知道 Reitz 大神出了一個叫 Requests-HTML 的庫,一直沒有興趣看,這回可算歹著機會用一下了。
使用 pip install requests-html 安裝,上手和 Reitz 的其他庫一樣,輕鬆簡單:
這個庫是在 requests 庫上實現的,r 得到的結果是 Response 對象下面的一個子類,多個一個 html 的屬性。所以 requests 庫的響應對象可以進行什麼操作,這個 r 也都可以。如果需要解析網頁,直接獲取響應對象的 html 屬性:
不得不膜拜 Reitz 大神太會組裝技術了。實際上 HTMLSession 是繼承自 requests.Session 這個核心類,然後將 requests.Session 類里的 requests 方法改寫,返回自己的一個 HTMLResponse 對象,這個類又是繼承自 requests.Response,只是多加了一個 _from_response 的方法來構造實例:
之後在 HTMLResponse 里定義屬性方法 html,就可以通過 html 屬性訪問了,實現也就是組裝 PyQuery 來干。核心的解析類也大多是使用 PyQuery 和 lxml 來做解析,簡化了名稱,挺討巧的。
元素定位可以選擇兩種方式:
方法名非常簡單,符合 Python 優雅的風格,這裡不妨對這兩種方式簡單的說明:
定位到元素以後勢必要獲取元素裡面的內容和屬性相關數據,獲取文本:
獲取元素的屬性:
還可以通過模式來匹配對應的內容:
這個功能看起來比較雞肋,可以深入研究優化一下,說不定能在 github 上混個提交。
除了一些基礎操作,這個庫還提供了一些人性化的操作。比如一鍵獲取網頁的所有超鏈接,這對於整站爬蟲應該是個福音,URL 管理比較方便:
內容頁面通常都是分頁的,一次抓取不了太多,這個庫可以獲取分頁信息:
結果如下:
通過迭代器實現了智能發現分頁,這個迭代器裡面會用一個叫 _next 的方法,貼一段源碼感受下:
通過查找 a 標籤裡面是否含有指定的文本來判斷是不是有下一頁,通常我們的下一頁都會通過 下一頁 或者 載入更多 來引導,他就是利用這個標誌來進行判斷。默認的以列表形式存在全局: [‘next’,’more’,’older’] 。我個人認為這種方式非常不靈活,幾乎沒有擴展性。 感興趣的可以往 github 上提交代碼優化。
也許是考慮到了現在 js 的一些非同步載入,這個庫支持 js 運行時,官方說明如下:
使用非常簡單,直接調用以下方法:
第一次使用的時候會下載 Chromium,不過國內你懂的,自己想辦法去下吧,就不要等它自己下載了。render 函數可以使用 js 腳本來操作頁面,滾動操作單獨做了參數。這對於上拉載入等新式頁面是非常友好的。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/288874.html