方法一:直接使用已知的cookie訪問
特點:
簡單,但需要先在瀏覽器登錄
具體步驟:
1.用瀏覽器登錄,獲取瀏覽器里的cookie字符串
先使用瀏覽器登錄。再打開開發者工具,轉到network選項卡。在左邊的Name一欄找到當前的網址,選擇右邊的Headers選項卡,查看Request Headers,這里包含了該網站頒發給瀏覽器的cookie。對,就是后面的字符串。把它復制下來,一會兒代碼里要用到。
注意,最好是在運行你的程序前再登錄。如果太早登錄,或是把瀏覽器關了,很可能復制的那個cookie就過期無效了。

urllib庫的版本代碼
1 """ 2 直接獲取 個人中心的頁面 3 手動粘貼 輔助 pc 抓包的 cookies 4 放在 request對象的請求頭里面 5 """ 6 7 import urllib.request 8 9 #1 數據url 10 url = "https://www.yaozh.com/member/" 11 #2 添加請求頭 12 headers = { 13 "User-Agent":" Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3650.400 QQBrowser/10.4.3341.400" 14 ,"Cookie":"acw_tc=2f624a7515558225995774143e31e6ef327f4bf5a2beec95289a6d4258f121; PHPSESSID=1rhel4pftt6lbmc6bhtkpjn7u4; yaozh_logintime=1555822916; yaozh_user=734735%09huazaid; yaozh_userId=734735; MEIQIA_VISIT_ID=1KA8DcXDfMW6WEeGhLuPgn9T0p0; yaozh_uidhas=1; yaozh_mylogin=1555822922; acw_tc=2f624a7515558225995774143e31e6ef327f4bf5a2beec95289a6d4258f121; MEIQIA_VISIT_ID=1KA8DcXDfMW6WEeGhLuPgn9T0p0" 15 } 16 #3 構建請求對象 17 request = urllib.request.Request(url,headers=headers) 18 #4 發送請求對象 19 response = urllib.request.urlopen(request) 20 21 #5 讀取數據 22 data = response.read() 23 #保存到文件中,驗證數據 24 with open("01cook.html","wb")as f: 25 f.write(data)
方法二:直接使用賬號密碼登錄訪問
退出登錄,按F12 ,再登錄,抓取數據

formhash和backurl要在登陸之前找
代碼
1 """ 2 獲取 個人中心的頁面 3 1.代碼登錄 登錄成功 cookie(有效) 4 2. 自動帶着cookie 去請求個人中心 5 6 cookiejar 自動保存這個cookie 7 """ 8 import urllib.request #請求庫 9 from http import cookiejar #保存cookie用的 10 from urllib import parse #轉譯 11 #登錄之前的, 登錄頁的網址https://www.yaozh.com/login 12 #找登錄參數 13 14 #后台 根據你發送的請求方式來判斷的 如果你是get(登錄頁面),如果POST(登錄結果) 15 #1.代碼登錄 16 # 1.1 登錄的網址 17 login_url = "https://www.yaozh.com/login" 18 19 20 #1.2 登錄的參數 21 login_form_data = { 22 "username": "用戶", 23 "pwd": "密碼", 24 "formhash": "E2F4BF731C", 25 "backurl": "https%3A%2F%2Fwww.yaozh.com%2F", 26 27 } 28 #1.3 發送登錄請求POST 29 cook_jar = cookiejar.CookieJar() 30 #定義有添加 cook 功能的 處理器 31 cook_hanlder = urllib.request.HTTPCookieProcessor(cook_jar) 32 #根據處理器 生成 opener 33 opener = urllib.request.build_opener(cook_hanlder) 34 35 #帶着參數 發送post請求 36 #添加請求頭 37 headers = { 38 "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3650.400 QQBrowser/10.4.3341.400"} 39 #1 參數 將來 需要轉譯 轉碼; 2 post 請求的 data 要求是bytes 40 login_str = parse.urlencode(login_form_data).encode('utf-8') 41 login_request = urllib.request.Request(login_url,headers=headers,data=login_str) 42 #如果登錄成功,cookjar自動保存cookie 43 opener.open(login_request) 44 45 # 2 代碼帶着cookie去訪問 個人中心 46 center_url = "https://www.yaozh.com/member/" 47 center_request = urllib.request.Request(center_url,headers=headers) 48 response = opener.open(center_url) 49 #bytes -->str 50 data = response.read().decode() 51 52 with open("02cook.html","w",encoding="utf-8")as f: 53 f.write(data)

