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...