urllib和re模組的使用

2021-09-26 23:03:32 字數 2813 閱讀 5619

re模組的使用

. 匹配任意乙個字元,除了\n

^ 匹配字串的開頭

$ 匹配字串的結尾

re模組

1 complie方法:將正規表示式的字串形式編譯為乙個pattern物件

2, match方法:從起始位置開始匹配符合規則的字串,單次匹配,匹配成功,立即返回match物件,未匹配成功則返回none

3. search 方法:從整個字串中匹配符合規則的字串,單次匹配,匹配成功,立即返回match物件,未匹配成功則返回none

4,findall 方法:匹配所有合規則的字串,匹配到的字串放到乙個列表中,未匹配成功返回空列表

5,finditer 方法:匹配所有合規則的字串,匹配到的字串放到乙個列表中,匹配成功返回

6,split 方法:根據正則匹配規則分割字串,返回分割後的乙個列表

7,sub 方法:替換匹配成功的指定位置字串

json模組的使用

json.loads()

把json格式字串解碼轉換成python物件 從json到python的型別轉化

json.dumps()

實現python型別轉化為json字串,返回乙個str物件 把乙個python物件編碼轉換成json字串

從pjson.dump()

將python內建型別序列化為json物件後寫入檔案

json.load()

讀取檔案中json形式的字串元素 轉化成python型別

urllib庫的基本使用

request它是最基本的http請求模組,可以用來模擬傳送請求,就像在瀏覽器中輸入**,然後敲擊回車鍵一樣,使用的時候只需要給庫方法傳入相關的url的相關的引數即可.

error:異常處理模組,如果出現請求錯誤,我們課使用這個模組來捕獲異常,然後進行重試或者其他操作,保證程式不會以為終止。

parse:這是乙個工具模組,提供了許多url的處理方法,比如拆分,解析,合併等等

urlopen方法的使用

url:設定目標url

data:如果設定該引數,則請求預設為post請求

timeout:用於設定超時時間,單位為秒。

context:必須是乙個ssl.sslcontext型別,用來指定ssl設定,忽略未認證的ca證書

request

使用urlopen直接傳送請求,獲取一些反爬手段低的**,有些**會根據請求頭來判斷是否是瀏覽器訪問,則需要增加http報頭,必須建立乙個request例項來作為urlopen()的引數;而需要訪問的url位址則作為request例項的引數。

url引數是請求鏈結,這個是必傳引數,其他的都是可選引數。

data(預設空) 引數跟urlopen()中的data引數用法相同。

headers(預設空)是乙個字典,它除了在request中新增,還可以通過呼叫request例項的add_header()方法來新增請求頭

unberifiable引數表示這個請求是否是無法驗證的,預設值是false,意思就是說使用者沒有足夠許可權來選擇接受這個請求的結果。例如我們請求乙個html文件中的,但是我們沒有自動抓取影象的許可權,我們就要將unverifiable的值設定為true.(這個引數我們不需要設定)

method引數指的是發起http請求的方式

urllib的異常錯誤處理

**urlerror:**來自urllib庫的error模組,繼承自oserror,由request模組產生的異常都可以通過捕捉這個類來處理。

主要原因有:

沒有網路連線

伺服器連線失敗

找不到指定的伺服器

它具有乙個屬性reason,返回錯誤的原因

httperror是urllerror的子類,我們發出乙個請求時,伺服器都會對應乙個response應答物件,其中它包含乙個數字「響應狀態碼」

專門用來處理http請求錯誤,比如未認證,頁面不存在等

有三個屬性:

code:返回http的狀態碼

reasn:返回錯誤的原因

headers:返回請求頭

parse模組下常用的url解析、合併、編碼、解碼方法

使用時需匯入

from urllib import parse

urlencode()將字典構形式的引數序列化為url編碼後的字串

(常用來構造get請求和post請求的引數)

parse_qs()將url編碼格式的引數反序列化為字典型別

quote()可以將中文轉化為url編碼格式

unquote:可以將url編碼進行解碼

urljoin()傳遞乙個基礎鏈結,根據基礎鏈結可以將某乙個不完整的鏈結拼接為乙個完整鏈結

urlparse()實現url的識別和分段(了解)

處理https請求 ssl證書驗證

出現ssl.certificateerror:…

這種錯誤時,我們就需要單獨處理ssl設定,忽略未認證的ca證書,讓程式忽略ssl證書驗證錯誤,即可正常訪問。

. 表示忽略未經核實的ssl證書認證 context = ssl._create_unverified_context()

1json模組的使用

json.loads()

把json格式字串解碼轉換成python物件 從json到python的型別轉化

json.dumps()

實現python型別轉化為json字串,返回乙個str物件 把乙個python物件編碼轉換成json字串

從pjson.dump()

將python內建型別序列化為json物件後寫入檔案

json.load()

讀取檔案中json形式的字串元素 轉化成python型別

urllib模組的使用

urllib.request.urlopen url,data none,timeout,cafile none,capath none,cadefault false,context none 直接用urllib.request模組的urlopen 獲取頁面,page的資料資料格式為bytes型別...

urllib模組的使用

url 需要開啟的 data post提交的資料 timeout 設定 的訪問超時時間 直接用urllib.request模組的urlopen 獲取頁面,page的資料格式為bytes型別,需要decode 解碼,轉換成str型別。1 from urllib import request 2 res...

re模組使用

import re strdata python is the best language in the world match只能匹配以 開頭的子符串,第乙個引數是正則,第二個引數是需要匹配的字串 res re.match p strdata,re.i re.i引數表示忽略大小寫 res re.m...