爬蟲學習(九)——登錄獲取cookie爬取


import urllib.request
import urllib.parse
import http.cookiejar

# http.cookiejar 該包是專門對網頁的cookie只進行獲取的
# cookiejar是專門讓代碼保存cookie值
# 創建一個cookiejar對象
cookiejar = http.cookiejar.CookieJar()
# 根據cookiejar創建一個管理器對象
handler = urllib.request.HTTPCookieProcessor(cookiejar)
# 在使用handler創建一個opener對象對服務器發送請求
opener = urllib.request.build_opener(handler)

url = "http://www.renren.com/ajaxLogin/login?1=1&uniqueTimestamp=2019131959912"
headers = {
"User-Agent":" Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36"
}
data = {
"email":"15904923018",
"icode":"",
"origURL":"http://www.renren.com/home",
"domain":"renren.com",
"key_id":"1",
"captcha_type":"web_login",
"password":"3912395285b1bc3a702d4b786c6ca78f31e3eb02581632ff953f3cde5d4a0e4c",
"rkey":"72b87c9a06689d433fac19cc32918a24",
"f":"https%3A%2F%2Fwww.baidu.com%2Flink%3Furl%3DG3uWgGKuXm54K9E_sD5z1fU3YkI4h1UVckfBqdYMWk_%26wd%3D%26eqid%3D979d3c7c0004e681000000025c63fb79",
}
data = urllib.parse.urlencode(data).encode("utf8")
request = urllib.request.Request(url,headers=headers)
# response = urllib.request.urlopen(request,data=data)

response = opener.open(request,data=data)
#顯示的結果是一個含登錄信息的網頁地址
print(response.read().decode("utf8"))

# 顯示結果:
# {"code":true,"homeUrl":"http://www.renren.com/home"}

# 獲取登錄時的cookie值
# 登錄后訪問其他含登錄信息的網頁時,必須帶着cookie

get_url = "http://www.renren.com/969727800/profile"
request = urllib.request.Request(get_url,headers=headers)

# opener對象保存了登錄時的cookie值
# 再次更換請求對象使用opener進行請求時,cookie還是存在的,能夠保存登錄信息
response1 = opener.open(request)
with open("renren1.html","wb")as tf:
tf.write(response1.read())


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM