爬蟲的所使用的模塊以及解析器

1.request的使用:

????????Requests 唯一的一個非轉(zhuǎn)基因的 Python HTTP 庫,人類可以安全享用:)????????? ??????

????????Requests 繼承了urllib的所有特性。Requests支持HTTP連接保持和連接池,支持使用cookie保持會話,支持文件上傳,支持自動確定響應(yīng)內(nèi)容的編碼,支持國際化的URL和 POST 數(shù)據(jù)自動編碼。

? ? ????安裝方法(linux):pip3 install requests

? ? ? ? GET請求(headers參數(shù)和parmas參數(shù)):

????????response = requests.get("http://www.baidu.com/")? ??????????????????

????????# 也可以這么寫

????????# response = requests.request(

????????? ?"get",

? ? ????????"http://www.baidu.com/"

????????)

????????????response的常用方法:????????????????????????? ??

????????????response.text 返回解碼后的字符串????

????????????respones.content 以字節(jié)形式(二進制)返回。

????????????response.status_code  響應(yīng)狀態(tài)碼

????????????response.request.headers  請求的請求頭

????????????response.headers  響應(yīng)頭

????????????response.encoding = 'utf-8' 可以設(shè)置編碼類型

????????????response.encoding 獲取當前的編碼

????????????response.json() 內(nèi)置的JSON解碼器,以json形式返回,前提返回的內(nèi)容確保是json格式的,不然解析出錯會拋異常

? ? ? ? ? ? ? ? POST請求(data參數(shù)):

? ??????????????response = requests.post(url=url, data = data)

? ? ? ? ? ? ? ??url:post請求的目標url? ?|? ?data:post請求的表單數(shù)據(jù)

? ??????????????傳入data數(shù)據(jù) 對于 POST 請求來說,我們一般需要為它增加一些參數(shù)。那么最基本的傳參方法可以利用 data 這個參數(shù).

? ??????????????

2.正則表達式匹配:

? ??????????正則表達式,又稱正規(guī)表示式、正規(guī)表示法、正規(guī)表達式、規(guī)則表達式、常規(guī)表示法(英語:Regular Expression,在代碼中常簡寫為regex、regexp或RE),是計算機科學的一個概念。正則表達式使用單個字符串來描述、匹配一系列匹配某個句法規(guī)則的字符串。在很多文本編輯器里,正則表達式通常被用來檢索、替換那些匹配某個模式的文本。

????????????Regular Expression的“Regular”一般被譯為“正則”、“正規(guī)”、“常規(guī)”。此處的“Regular”即是“規(guī)則”、“規(guī)律”的意思,Regular Expression即“描述某種規(guī)則的表達式”之意。

? ??????????目的 給定一個正則表達式和另一個字符串,我們可以達到如下的目的:

? ? ? ? ? ? (1)給定的字符串是否符合正則表達式的過濾邏輯(稱作“匹配”):

? ? ? ? ? ? (2)可以通過正則表達式,從字符串中獲取我們想要的特定部分。

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

正則表達式語法支持情況:

正則表達式匹配的規(guī)則如下:?



XPath選擇器:

? ??????XPath (XML Path Language) 是一門在 XML 文檔中查找信息的語言,可用來在 XML 文檔中對元素和屬性進行遍歷。

????????XPath 開發(fā)工具 1.開源的XPath表達式編輯工具:XMLQuire(XML格式文件可用) 2.Chrome插件 XPath Helper 3.Firefox插件 XPath Checker

????????選取節(jié)點 XPath 使用路徑表達式來選取 XML 文檔中的節(jié)點或者節(jié)點集。這些路徑表達式和我們在常規(guī)的電腦文件系統(tǒng)中看到的表達式非常相似




CSS選擇器:BeautifullSoup4:

????????Beautiful Soup 也是一個HTML/XML的解析器,主要的功能也是如何解析和提取 HTML/XML 數(shù)據(jù)。

????????lxml 只會局部遍歷,而Beautiful Soup 是基于HTML DOM的,會載入整個文檔,解析整個DOM樹,因此時間和內(nèi)存開銷都會大很多,所以性能要低于lxml。

????????BeautifulSoup 用來解析 HTML 比較簡單,API非常人性化,支持CSS選擇器、Python標準庫中的HTML解析器,也支持 lxml 的 XML解析器。

????????Beautiful Soup 3 目前已經(jīng)停止開發(fā),推薦現(xiàn)在的項目使用Beautiful Soup 4。使用 pip 安裝即可:pip install beautifulsoup4


pyQuery解析器的使用:

????????PyQuery簡介 pyquery相當于jQuery的python實現(xiàn),可以用于解析HTML網(wǎng)頁等。它的語法與jQuery幾乎完全相同,對于使用過jQuery的人來說很熟悉,也很好上手。

? ??????1、.html()和.text()?獲取相應(yīng)的 HTML 塊或者文本內(nèi)容,

? ??????2、(selector):通過選擇器來獲取目標內(nèi)容,?

? ??????3、.eq(index):根據(jù)索引號獲取指定元素(index 從 0 開始)

? ??????4、.find():查找嵌套元素,

???????? 5、.filter():根據(jù) class、id 篩選指定元素,

? ??????6、.attr():獲取、修改屬性值,?

數(shù)據(jù)提取JSON與JsonPATH:

????????JSON(JavaScript Object Notation) 是一種輕量級的數(shù)據(jù)交換格式,它使得人們很容易的進行閱讀和編寫。同時也方便了機器進行解析和生成。適用于進行數(shù)據(jù)交互的場景,比如網(wǎng)站前臺與后臺之間的數(shù)據(jù)交互。? ??????

??????????json簡單說就是javascript中的對象和數(shù)組,所以這兩種結(jié)構(gòu)就是對象和數(shù)組兩種結(jié)構(gòu),通過這兩種結(jié)構(gòu)可以表示各種復雜的結(jié)構(gòu)??????? ??????

????????????1.對象:對象在js中表示為{ }括起來的內(nèi)容,數(shù)據(jù)結(jié)構(gòu)為 { key:value, key:value, ... }的鍵值對的結(jié)構(gòu),在面向?qū)ο蟮恼Z言中,key為對象的屬性,value為對應(yīng)的屬性值,所以很容易理解,取值方法為 對象.key 獲取屬性值,這個屬性值的類型可以是數(shù)字、字符串、數(shù)組、對象這幾種。

????????????2.數(shù)組:數(shù)組在js中是中括號[ ]括起來的內(nèi)容,數(shù)據(jù)結(jié)構(gòu)為 ["Python", "javascript", "C++", ...],取值方式和所有語言中一樣,使用索引獲取,字段值的類型可以是 數(shù)字、字符串、數(shù)組、對象幾種。

json模塊提供了四個功能:dumps、dump、loads、load,用于字符串 和 python數(shù)據(jù)類型間進行轉(zhuǎn)換。

1. json.loads():把Json格式字符串解碼轉(zhuǎn)換成Python對象

????? ? ? ? ? ? ? ? ? ? ? ?

2. json.dumps():實現(xiàn)python類型轉(zhuǎn)化為json字符串,返回一個str對象 把一個Python對象編碼轉(zhuǎn)換成Json字符串



3. json.dump()?將Python內(nèi)置類型序列化為json對象后寫入文件

4. json.load()?讀取文件中json形式的字符串元素 轉(zhuǎn)化成python類型


Json結(jié)構(gòu)清晰,可讀性高,復雜度低,非常容易匹配,下表中對應(yīng)了XPath的用法。




?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容