完整的功能:獲取個人中心的界面
1.代碼登錄(代碼設(shè)置賬號和密碼)保存cookie
需要登錄的url 個人中心的url
(1)獲取cookie需要登錄的url
(2)爬取個人中心需要個人中心的url
獲取個人中心頁面的數(shù)據(jù)
2.帶著cookie 去請求個人中心
import urllib.request
from http import cookiejar
from urllib import parse
cookiejar用來管理cookie
1.1登錄之前獲取賬號密碼(登錄界面)
1.2發(fā)送請求登錄(賬號密碼)
請求頭
url = "https://www.yaozh.com/login/"
headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36",
}
構(gòu)造請求參數(shù)(post請求參數(shù)必須是字典)
login_from_data = {"username":"徒步珊瑚海3","pwd":"ym800314",
"formhash":"BE09D485AD","backurl":"https%3A%2F%2Fwww.yaozh.com%2F"}
post 請求上傳的參數(shù)必須要是bytes
(1)將參數(shù)轉(zhuǎn)譯
log_bytes = parse.urlencode(login_from_data).encode("utf-8")
構(gòu)造請求頭對象
login_request = urllib.request.Request(url,headers=headers,data=log_bytes)
請求參數(shù)(get是拼接到url后面)
username: 徒步珊瑚海3
pwd: ym800314
formhash: BE09D485AD
backurl: https%3A%2F%2Fwww.yaozh.com%2F
發(fā)送post請求(登錄成功保存cookie信息)
cook_jar = cookiejar.CookieJar()
創(chuàng)建可以添加cookie的處理器(handler)
因為默認urlopen的方式不能保存cookie
cook_handler = urllib.request.HTTPCookieProcessor(cook_jar)
根據(jù)handler創(chuàng)建opener
opener = urllib.request.build_opener(cook_handler)
發(fā)送請求
login_from_data即包含 請求頭信息,又包含參數(shù)信息
發(fā)送請求如果登錄成功自動幫助我們保存cookie
opener.open(login_request)
2訪問個人中心界面(opener對象里面有cookie)
2.1 個人中心的url
center_url = "https://www.yaozh.com/member/"
構(gòu)造請求對象
center_request = urllib.request.Request(center_url,headers=headers)
發(fā)送網(wǎng)絡(luò)請求(拿著cookie信息去發(fā)送)
拿著剛剛創(chuàng)建好的opener去發(fā)送請求,因為這個opener里面保存了cookie
response = opener.open(center_request)
data = response.read().decode("utf-8")
with open("new.html","w",encoding="utf-8")as f:
f.write(data)