爬蟲基礎回顧

2021-09-02 19:59:28 字數 3412 閱讀 2500

1、基礎知識

1.1 http的過程

先是在對應的瀏覽器裡面輸入url,通過瀏覽器來傳送請求到目標伺服器(url指向的伺服器),目標服務會根據請求,傳送回響應給瀏覽器,瀏覽器對相應進行解析。

1.1.1 請求

(1)請求方式:get()/post()

(2)請求url:url有引數,一般是在『?』後面的是引數,有多個引數的話,通過『&』連線起來

(3)請求頭:user-agent:最基本的反爬;cookies:記錄session、賬號以及密碼等;cotent-type:區分不同的檔案資訊,post請求一般會新增

(4)請求體:getq請求沒有請求體,只有post請求有請求體。

1.1.2 響應

(1) 狀態碼:200(請求成功),3**(重定向),404(not found),500(server內部錯誤)

(2) 響應頭:set_cookies裡面會包含登入後的賬號密碼資訊

(3) 響應體:最主要的內容資訊。html檔案:正規表示式、beatifulsoup、pyquery、lxml;json:json.loads();二進位制的檔案:儲存為對應的格式

1.2 爬蟲的基本概念

爬蟲就是模擬瀏覽器獲取響應,針對響應提取資訊,並對提取的資訊進行儲存的自動化程式

(1)獲取響應:通過偽裝請求,來獲取響應:urllib、requests、selenium(渲染庫)

(2)提取資訊:就是對響應體進行解析:html檔案:正規表示式、beatifulsoup、pyquery、lxml;json:json.loads();二進位制的檔案:儲存為對應的格式

(3)儲存資料:儲存成檔案、儲存到資料庫(mysql、mongodb)。

2、urllib(請求庫)

2.1 urllib.request:進行請求

#如果data=none,就是get請求;data不為none,必須輸入的是位元組流(可以借助urlencode()進行轉化)

(1)response=urllib.request.urlopen(url,data=none,timeout)#返回的是httpresponse物件

(2)urllib.request.request(url,data=none,headers={},method='get')#通過構建request物件,可以構建請求的四大部分

(3)響應:

response.status#響應狀態碼

response.getheaders()#獲取所有的響應頭資訊

response.getheader(name)

response.read()#獲取響應的資訊,返回的二進位制,可以和配合decode進行編碼

2.2 urllib.error#異常處理

urllib.error.urlerror#總的異常,返回的是reason

urllib.error.httperror#http方面的異常,返回reason/code/headers

2.3 urllib.parse#解析url,或者url編碼

urllib.parse.urlencode({})#可以對字典進行url編碼,字典的各個部分自動通過『&』拼接起來,返回的是字串

urllib.parse.quote()#針對字串進行url編碼

urllib.parse.unquote()#quote()的逆方法

3.requests(請求庫)

3.1 請求方式

requests.get()

requests.post()

3.2 requests.get()

response=requests.get(url,params={},headers={},timeout,cookies=requestscookiejar,proxies={})

#params:url的引數,字典形式

#headers:請求頭,字典形式

#timeout:超時設定

#cookies:直接傳入requests.cookies.requestscookiejar例項化物件

#proxies:**,字典形式

3.3 響應

response.text#返回的字串形式的響應體

response.content#返回的是二進位制的響應體

response.json()#針對json格式的響應體,返回字典形式

response.status_code#返回狀態碼

response.headers#返回響應頭

response.cookies#返回requests.cookies.requestscookiejar物件

requests.utils.dict_from_cookiejar(r.cookies)#將requestscookiejar物件轉化為字典形式

3.4 requests.post()

response=requests.get(url,params={},headers={},data={},timeout,cookies=requestscookiejar,proxies={})

#data:請求體,字典形式

3.5 異常

requests.exceptions.requestexception #最高端的別的異常

requests.exceptions.httperror #http方面的異常

requests.exceptions.connecterror #連線方面的異常

requests.exceptions.timeout#超時異常

4.正規表示式

4.1.常用的規則

\d:數字,等價於[0-9],\d

\s:空格,等價[\r\n\t],\s

:可以匹配中括號裡面的任意字元

[^]:取反

.:除換行符以外的任意字元

*:前面符號的0個或者多個

+:前面符號的1個或者多個

?:非貪婪模式

():新增組,也用來做目標匹配

.*:貪婪模式,除換行符以外的任意字串

.*?:非貪婪模式,除換行符以外的任意字串

\:轉義字元

4.2. re.match

re.match(r'',html,re.s|re.i)#只能從頭開始匹配

#修飾符

re.s:指的是『.』也可以指代換行符

re.i:匹配時,對大小寫不敏感

4.3. re.search

re.search(r'',html,re.s|re.i)#可以從任意位置開始匹配,但是只返回匹配第乙個字串

4.4. re.findall

re.findall(r'',html,re.s|re.i)#返回所有與之匹配結果,返回的是列表形式

4.5. re.sub

re.sub(r'','',html,re.s)#替換

4.6. re.compile

re.compile(r'',re.s)#用來編譯正規表示式,便於復用

爬蟲基礎知識回顧一

一 二 正則表達 可完成 例如 1天前 取出 1 b.b 以b開頭 任意乙個字元 可出現多次 import re line qbssqbss regex str qb.if re.match regex str,line print yes 以 結尾,3 以.結 尾,3 以3結尾 regex str...

爬蟲重點回顧

閱讀網頁和解碼 1 建立請求 2 開啟目標網頁 3 閱讀網頁 4 解碼 5 找關鍵 分析 6 根據規律使用正規表示式 7 檔案讀寫 請求的時候,可以使用預設的request請求 當然也可以自定義請求物件 request.request 在自定義的請求物件中可以加入請求頭 請求頭的作用是反爬蟲,模擬不...

執行緒回顧 多執行緒爬蟲

import threading def run a 當前執行緒 c threading.current thread print 子執行緒開始 c.name 建立乙個執行緒 t threading.thread target run,args 1,name haha 啟動執行緒 t.start 關...