爬蟲入門之urllib的使用

2021-09-26 23:01:26 字數 3089 閱讀 5021

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()
1. json.loads()

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

2. json.dumps()

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

從p3. json.dump()

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

4. json.load()

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

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

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

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

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

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

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

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

re.i使用匹配對大小寫不敏感(不區分大小寫)

re.s使.匹配包括換行符在內的所有字元

re.m多行匹配

re.l做本地化識別

. 匹配除了換行符之外的任意字元

\d 匹配數字0-9 -> [0-9] => ^\0

\d 匹配非數字

\s 匹配空白字元(空格 \n \r \t)

\s 匹配非空白字元

\w 匹配單詞字元[a-za-z0-9_]

\w 匹配非單詞字元

^ 以 。。。開頭

$ 以。。。結尾

[0-9a-z] 表示匹配數字0-9字母a-z

[^a-z] : 不匹配a-z之間的字元

#多字元匹配 貪婪模式

多字元匹配,非貪婪模式

*?+?

??| 或

() 分組

\ 轉義字元

Python爬蟲入門1之urllib庫的使用

這是我第一次認真的寫部落格,真正的記錄下我的學習過程。學習爬蟲之前,應該有html的基礎,python語言的基本用法,再入門爬蟲,隨著爬蟲的深入,再學習python的正規表示式等,本人小白一枚,我的爬蟲之路開始啦 urrlib是python中自帶的一種簡單易用的模組,使用它我們可以獲取一些簡單的網頁...

Python爬蟲入門三之Urllib庫的基本使用

1.分分鐘扒乙個網頁下來 怎樣扒網頁呢?其實就是根據url來獲取它的網頁資訊,雖然我們在瀏覽器中看到的是一幅幅優美的畫面,但是其實是由瀏覽器解釋才呈現出來的,實質它是一段html 加 js css,如果把網頁比作乙個人,那麼html便是他的骨架,js便是他的肌肉,css便是它的衣服。所以最重要的部分...

爬蟲之urllib庫

一 urllib的基本使用 import urllib.request response urllib.request.urlopen 獲取當前爬取網頁的狀態碼 print response.getcode decode 解碼 位元組資料轉成字串資料 data response.read decod...