pyhon爬蟲模擬網頁登陸、正則表示式
阿新 • • 發佈:2022-03-13
前言:不是每個網頁都能模擬成功,僅供學習
模擬網頁登陸
--安裝模組--
pip install urllib (執行cmd輸入此段程式碼即可安裝)
點選檢視程式碼
from urllib import request import urllib from http import cookiejar # 定義檔名 filename = 'cookie.txt' # 宣告一個cookie,傳入檔名 cookie = cookiejar.MozillaCookieJar(filename) # 定義cookie處理 handler = request.HTTPCookieProcessor(cookie) # 定義下載器,傳入處理器 opener = request.build_opener(handler) # 定義登入用的賬號密碼 postdata = urllib.parse.urlencode({ 'username': '賬號', 'password': '密碼' }).encode(encoding='UTF8') # url loginUrl = '網站' # 模擬登入頁面 resp = opener.open(loginUrl, postdata) # 儲存cookie到檔案 cookie.save(ignore_discard=True, ignore_expires=True) # 再次訪問網站 url2 = "網站" # 開啟頁面 try: result = opener.open(url2) except request.HTTPError as e: if hasattr(e, "code"): print(e.code) except request.URLError as e: if hasattr(e, "reason"): print(e.reason) else: print(result.read())
正則表示式
瞭解正則表示式
正則表示式是對字串操作的一種邏輯公式,就是用事先定義好的一些特定字元、及這些特定字元的組合,組成一個“規則字串”,這個“規則字串”用來表達對字串的一種過濾邏輯。
安裝模組
pip install re (執行cmd輸入此段程式碼即可安裝)
import re
將正則表示式編譯成Pattern物件,注意hello前面的r的意思是“原生字串”
pattern = re.compile(r'hello')
使用re.match匹配文字,獲得匹配結果,無法匹配時將返回None
result1 = re.match(pattern,'hello')
result2 = re.match(pattern,'helloo YC!')
result3 = re.match(pattern,'helo YC!')
result4 = re.match(pattern,'hello YC!')
match表示從頭開始匹配 匹配不到返回none
search可以從任意位置匹配
認識匹配規則字元:
點選檢視程式碼
import re # 定義正則化規則=匹配模式,r表示原生字串 rexg = re.compile(r'\d*\w*') res = re.search(rexg, '555555555ddddddddddddd5') print(res) rexg1 = re.compile(r'\d+\w*') res1 = re.search(rexg1, 'ppppp555555555ddddddddddddd5') print(res1) rexg2 = re.compile(r'\d?dddddd') res2 = re.search(rexg2, 'ppppp555555555ddddddddddddd5') print(res2) # 電話號碼 rexg3 = re.compile(r'1\d{10}') res3 = re.search(rexg3, '13865256323') print(res3) # 定義郵箱 rexg4 = re.compile(r'\d{5,12}@\w{2}\.\w{3}') res4 = re.search(rexg4, '[email protected]') print(res4) rexg5 = re.compile(r'\d+') res5 = re.search(rexg5, '[email protected]') print(res5) rexg6 = re.compile(r'\d{5,12}? ?') res6 = re.search(rexg6, '[email protected]') print(res6) # 邊界匹配-匹配字串開頭 rexg7 = re.compile(r'\Aabc') res7 = re.search(rexg7, 'abcqqqqqqqqqabccttttttttttt' 'abcctttttttttabc') print(res7) # 任意 rexg8 = re.compile(r'1\d{10}|\d{5,12}@\w{2}\.\w{3}') res8 = re.search(rexg8, "[email protected]") print(res8) # 分組 rexg9 = re.compile(r'(abc){3}') res9 = re.search(rexg9, "zUJXHUJHXuabcabcabcosaojaodiabcosajosabc") print(res9) # 分組 + 別名 rexg10 = re.compile(r'(?P<tt>abc)888(?P=tt)') res10 = re.search(rexg10, "hasghsabc888abc") print(res10) # 分組 + 編號 rexg11 = re.compile(r'(\d{5})uu\1') res11 = re.search(rexg11, "12345uu12345") print(res11)