python爬蟲基礎(3)爬蟲高階知識

2021-10-01 13:49:35 字數 4765 閱讀 8138

cookie是指**為了鑑別使用者身份,進行繪畫跟蹤而儲存在客戶端本地的資料。

本來的含義是指有始有終的一系列動作,而在web中,

session物件用來在伺服器儲存特定使用者會話所需要的屬性及資訊。

cookie和session他們不屬於http協議範圍,由於http協議無法保持狀態,

但實際情況,我們有需壓保持一些資訊,

作為下次請求的條件,所以就產生了cookie和session。

由伺服器產生,當瀏覽器第一次登陸,傳送請求到伺服器,

伺服器返回資料,同時生成乙個cookie返回給客戶端,客戶端將這個cookie儲存下來

當瀏覽器再次訪問瀏覽器會自動帶上cookie資訊,這樣伺服器就能通過cookie判斷是哪個使用者在操作。

①、不安全

②、cookie本身最大支援4096(4kb)----儲存大小受限制

正是因為cookie的缺陷,所以產生了另一種會話機制 ----- session

伺服器儲存session,基於http協議的無狀態特徵,

伺服器就不知道這個訪問的是誰,為了解決這個問題,

cookie就起到了橋的作用。cookie在使用的時候,

將乙個叫做sessionid的字段放到cookie中,

將來伺服器可以通過這個id欄位來查詢到地上的那個使用者的session。

當使用者第一次登入時建立(session開始),到session有效期結束(30min)。

不失效,原因,session失效是由生命週期決定的。

name:cookie名稱,一旦建立,不可更改。

value:cookie的值。

domain:是cookie可以訪問**網域名稱。

maxage:cookie的失效時間,負數代表永不失效。

path:cookie使用路徑

http欄位:cookie的httponly,若此屬性為true,則只有http頭中會帶有cookie

secrue:該cookie是否僅被使用安全傳輸協議

size:cookie的大小

持久化:將記憶體中的資料儲存到硬碟(檔案中,資料庫)上的過程。

序列化:將物件儲存到硬碟上。

會話cookie:儲存在記憶體中的cookie,瀏覽器關閉,cookie失效。

持久cookie:儲存在硬碟上的cookie,瀏覽器關閉,cookie不失效。

特點:資料以行為單位,每乙個資料表示乙個實體,每一行資料的屬性都是一樣的。

舉例:關係型資料庫中的表就是結構化資料

處理方法:sql

特點、結構化資料的另一種形式,他並不符合關係型資料的特點,不能用關係型模型來描述,

但是這種資料報含相關標記,有用來分割語義元素及欄位進行分層的描述,

因此也被稱為自描述結構

舉例:xml,html,json

處理方法:正則,xpath,jsonpath,css選擇器。

json是js語言中用來用【字串格式】來儲存物件和陣列的一種資料結構。

js的陣列:var array = [『aaa』,『bb』,『vv』]--------和python列表對應

js的物件:var obj = ----和python字典對應

name = obj.name

json模組:

對json字串的操作;

json.loads(json_str)------->python的list火車dict

json.dumps(python的list或者dict) ----->json_str

…對json檔案的操作:

json.load(fp)----->從json檔案中讀出json資料,返回乙個python的list或者dict。

json.dump(python的list或者dict,fp)---->python的list或者dict儲存到fp所對應的檔案中。

json作為資料格式進行傳輸,具有較高的效率

json不像xml那樣具有嚴格的閉合標籤,所以json作為資料傳輸的時候,

他的資料有效佔比(有效資料和總資料的比)比xml高很多。

在相同流量下,json比xml作為資料傳輸,傳輸的資料更多。

(1)匹配邊界:

^-----------行首

$-----------行尾

(2)重複次數

?------------0次或1次

*------------->=0

±----------->=1

—>=n

—>=n,<=m

----n次

(3)各種字元的表示

----匹配括號中乙個字元,單字元

[abc]–匹配a或者b或者c

[a-z0-9a-z]

\d—數字

\w—數字字母下劃線

\s—空白字元:換行符、製表符、空格

\b—單詞邊界

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

python中的re模組是用來做正則處理的

#導包import re

#將正規表示式編譯成乙個pattern物件

pattern = re.complie(

r』正規表示式』,

『匹配模式』

)r標識元字元。

#3、用pattern物件來使用相應的方法來匹配內容。

1.match方法:預設從頭開始,只匹配一次,返回乙個match物件。

pattern.match(

『匹配的目標字串』,

start,匹配開始的位置----預設,start=0

end,匹配結束的位置----預設,end=-1

)----->match物件

match物件的屬性:

match.group()--------獲取匹配的內容

match.span()---------匹配的範圍

match.start()----------開始的位置

match.end()-----------結束位置

這些方法都可以帶乙個引數0,但是不能寫1,1來表示取分組。

match.group(0)—獲取匹配內容。

match.span(0)–匹配的範圍

match.start(0)—開始位置

match.end(0)—結束位置

match.groups()—將所有分組的內容,按順序放到乙個元組中返回

2、search方法:從任意位置開始匹配,只匹配一次,返回乙個match物件

pattern.search(

『匹配的目標字串』

start,匹配開始的位置—預設,end = -1

end,匹配結束的位置–預設,end = -1

)—>match物件

3、findall方法:全文匹配,匹配多次,將每次匹配到的結果放到list中返回。

pattern.findall(

'匹配的目標字串',

start,匹配開始的位置--預設,start = 0

end,匹配結束的位置--預設,end = -1

)--->list

4、finditer方法:全文匹配,匹配多次,返回乙個迭代器。
pattern.finditer(

'匹配的目標字串',

start,匹配開始的位置--預設,start = 0

end,匹配結束的位置--預設,end = -1

)--->list

finditer主要用匹配內容比較多的情況下。

5、split:切分,按照正則所表示內容進行切分字串,返回切分後的每個子串
pattern.split(

'要切分的字串',

'切分字數',預設是全部分。

)--->list

6、sub方法:用指定字串,替換正則表達所匹配到的內容。
pattern.sub(

repl,#替換成什麼

content,替換什麼

count,替換次數,預設替換所有

)--->替換後的字串。

repl替換內容可以使函式:

函式要求:

1.函式必須有引數,引數就是正則匹配目標字串所得到的每個match物件。

2、這個函式必須要有返回值,返回值必須是字串,這個字串將來就作為替換的內容。

#zhangsan:3000,lisi:4000

#漲工資每個人漲1000

content = 『zhangsan:3000,lisi:4000』

p = re.compile(r』\d+』)

result = p.sub(add,)

分組在正規表示式中使用()來表示的,乙個括號就是乙個分組。

分組的作用:

(1)篩選特定內容

(2)可以在同乙個表示式中應用前面的分組:

\1引用第一分組

(3)findall配合分組

import re

content = 『

』p = re.compile(r』<(html)><(h1)>(.*)』)

# print(p.search(content).group())

print(p.findall(content))#[(『html』, 『h1』, 『正規表示式』)]

(1)貪婪和非貪婪的卻別在於匹配內容的多少。

(2)貪婪使用*來控制匹配次數的。正則預設是貪婪。

(3)非貪婪使用?來控制的。

(4)在表示數量控制元字元後面加乙個?,此時就表示這個數量控制符取最小值,也就是非貪婪。

re.s ----.可以匹配換行符

re.i----忽略大小寫。

爬蟲基礎 3

入門小練習 附註 moocpython網路爬蟲與資訊提取 coding utf 8 import requests from bs4 import beautifulsoup def gethtmltext url try req requests.get url req.raise for sta...

python爬蟲高階 SVG對映反爬蟲

破解svg加密的字元,得到正確的字元 練習平台 一 svg的具體表現 二 css檔案 三 svg 四 舉例詳解 這裡選擇圖一為例 已知 類名 vhkjj4 座標 316px 141px 取正整數則為 316,141 可以自行選擇其他類名進行嘗試 usr bin env python coding u...

Python爬蟲(入門 高階)

講解方式 針對每乙個 或專題進行詳細深入的專項講解 課程亮點 具體的 資料抓取的案例和常見爬蟲問題的專項解答 課程內容 python爬蟲熱點專案,由多個 資料抓取的案例和常見問題專項解答組成 適用人群 1 希望未來從事爬蟲或反爬蟲方向工作的程式設計師。2 正在從事爬蟲工作,但對目前職業有進一步提公升...