1. 程式人生 > 遊戲 >《艾爾登法環》遊戲內文字並非由喬治馬丁撰寫

《艾爾登法環》遊戲內文字並非由喬治馬丁撰寫

re模組

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={...})