完整的功能:获取个人中心的界面
1.代码登录(代码设置账号和密码)保存cookie
需要登录的url 个人中心的url
(1)获取cookie需要登录的url
(2)爬取个人中心需要个人中心的url
获取个人中心页面的数据
2.带着cookie 去请求个人中心
import urllib.request
from http import cookiejar
from urllib import parse
cookiejar用来管理cookie
1.1登录之前获取账号密码(登录界面)
1.2发送请求登录(账号密码)
请求头
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",
}
构造请求参数(post请求参数必须是字典)
login_from_data = {"username":"徒步珊瑚海3","pwd":"ym800314",
"formhash":"BE09D485AD","backurl":"https%3A%2F%2Fwww.yaozh.com%2F"}
post 请求上传的参数必须要是bytes
(1)将参数转译
log_bytes = parse.urlencode(login_from_data).encode("utf-8")
构造请求头对象
login_request = urllib.request.Request(url,headers=headers,data=log_bytes)
请求参数(get是拼接到url后面)
username: 徒步珊瑚海3
pwd: ym800314
formhash: BE09D485AD
backurl: https%3A%2F%2Fwww.yaozh.com%2F
发送post请求(登录成功保存cookie信息)
cook_jar = cookiejar.CookieJar()
创建可以添加cookie的处理器(handler)
因为默认urlopen的方式不能保存cookie
cook_handler = urllib.request.HTTPCookieProcessor(cook_jar)
根据handler创建opener
opener = urllib.request.build_opener(cook_handler)
发送请求
login_from_data即包含 请求头信息,又包含参数信息
发送请求如果登录成功自动帮助我们保存cookie
opener.open(login_request)
2访问个人中心界面(opener对象里面有cookie)
2.1 个人中心的url
center_url = "https://www.yaozh.com/member/"
构造请求对象
center_request = urllib.request.Request(center_url,headers=headers)
发送网络请求(拿着cookie信息去发送)
拿着刚刚创建好的opener去发送请求,因为这个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)