《艾爾登法環》遊戲內文字並非由喬治馬丁撰寫
import re s=""" eva jason tony yuan jason jason jaosn a """
findall(正則,文字資料)
在匹配的時候是全域性匹配,不會因為匹配到一個就停止
返回結果是一個列表,內部包含正則匹配到的所有的內容
ret = re.findall('j.*?n',s) # 返回所有滿足匹配條件的結果,放在列表裡 print(ret)
finditer(正則,文字資料)
返回的結果是一個迭代器(更加節省記憶體)只有主動索要才會產生資料,否則永遠之戰一塊空間
# 暫時瞭解 res = re.finditer('j.*?n',s) for i in res: print(i.group())
search
匹配到一個符號條件的資料就結束
res = re.search('j.*?n',s) print(res)
match
只能從頭開始匹配,頭部不符合直接停止
res1 = re.match('j.*?n',s) print(res1)
findall分組優先展示
會優先展示括號內正則表示式匹配到的內容
import re ret = re.findall('www.(oldboy).com','www.oldboy.com') print(ret) # 取消分組優先展示ret1 = re.findall('www.(?:oldboy).com','www.oldboy.com') print(ret1) ret = re.findall('www.(?:baidu|oldboy).com','www.oldboy.com') print(ret)
爬蟲模組之requests
作用
可以模擬瀏覽器傳送網路請求獲取資料
先下載
pip3 install requests
1.切換源
2.針對報錯
再匯入
import requests
網路請求方法
網路方法一般有八個之多,但是目前需要我們掌握的只有兩個
get請求
朝別人索要資料
eg:瀏覽器地址輸入百度網址,回車,其實就是在傳送get請求,朝百度伺服器索要百度首頁
get請求也可以攜帶額外的資料,但是資料量有限制最多2~4KB,並且是直接解除安裝網址的後面
url?xxx=yyy&zzz=mmm
post請求
朝別人提交資料
eg:使用者註冊登陸輸入需要輸入使用者名稱和密碼之後點選按鈕傳送post請求將資料提交給遠端伺服器
post請求也可以攜帶額外的資料,並且資料大小沒有限制,敏感性的資料都是由post請求攜帶
資料放在請求體中
HTTP協議
規定了瀏覽器與服務端之間資料互動的方式
1.四大特性(重要)
1.基於請求響應
2.基於TCP、IP作用於應用層之上的協議
3.無狀態
不儲存客戶端的狀態
eg:
縱使見她千百遍,我都待她如初見
4.無連線
2.資料請求格式(重要)
請求資料格式
請求首行(請求方法,地址...)
請求頭(一大堆K:V鍵值對)
'''注意:此處必須空一行'''
請求體(get請求沒有請求體,post請求有,裡面是敏感資料)
響應資料格式
響應首行(響應狀態碼,協議版本...)
響應頭(一大堆K:V鍵值對)
'''注意:此處必須空一行'''
響應體(一般都是給瀏覽器展示給使用者看的資料)
3.響應狀態碼(重要)
用簡單的數字來表示一串中文意思(制定暗號)
1xx:服務端已經成功接收到了你的資料正在處理,你可以繼續提交或者等待
2xx:200 OK請求成功服務端傳送了響應
3xx:重定向(原本想訪問A頁面但是內部自動跳到了B頁面)
4xx:403 請求不符合條件 404 請求資源不存在
5xx:服務端內部錯誤
(公司還會自己自定義響應狀態碼(HTTP的狀態碼太少不夠用)
10001
10002
參考網址:聚合資料)
requests模組基本使用
傳送網路請求
import requests requests.get(url) # 傳送get請求 requests.post(url) # 傳送post請求
1.簡單的get請求獲取頁面並報錯
import requests # 朝百度傳送get請求獲取首頁資料 res = requests.get('https://www.baidu.com/') # print(res.status_code) # 獲取響應狀態碼 # 指定字元編碼 # res.encoding = 'utf8' # print(res.text) # 獲取網頁字串資料 # print(res.content) # 獲取bytes型別的資料(在python中可以直接看成是二進位制) with open(r'baidu.html','wb') as f: f.write(res.content)
2.攜帶引數的get請求
requests.get(url,params{})
3.如何攜帶請求頭資料
requests.get(url,headers={})
防爬措施
1.效驗當前請求是否是瀏覽器發出的
用於效驗的核心就在於請求頭裡面的User-Agent鍵值對
只要請求裡面含有該鍵值對就表示你是個瀏覽器沒有則不是瀏覽器
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.63 Safari/537.36
解決措施在請求頭中加上即可
requests.get(url,headers={...})