模拟用户登录网址-post请求之后携带cookie

参考代码
import urllib.request
from http import cookiejar
from urllib import parse

# cookiejar 自动保存cookie

"""
    直接获取  个人中心页面
    1.代码登录  登录成功(Cookie有效)
    2.自动带着cookie去请求个人中心
"""

# 1. 登录的网址
    # 1.1登录的网址
    # 1.2登录的参数
    # 1.3发送登录请求
# 2.代码带着cookie去访问  个人中心

# 1.1
login_url = "https://www.yaozh.com/login"

# 后台根据发送的请求方式来判断   如果是get(登录页面),如果是post(登录结果)
# 1.2
login_form_data = {
        "username":"XXXXXX",
        "pwd":"XXXXX",
        # 下面这两个参数写不对  也登录不成功
        "formhash":"9D85EAC7F3",
        # https%3A%2F%2Fwww.yaozh.com%2F
        "backurl":"https%3A%2F%2Fwww.yaozh.com%2F"
}
headers = {
    "User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36"
}


# 1.3
cook_jar = cookiejar.CookieJar()
# 定义有添加cookie 功能的处理器
cook_handler = urllib.request.HTTPCookieProcessor(cook_jar)
# 根据处理器生成opener
opener = urllib.request.build_opener(cook_handler)

# >>1.参数需要进行转码
# >>2.post请求的data要求是byte类型
# 带着参数  发送post请求
# 发送带参数的请求需要转码  否则参数是字典类型是不认识的   但是转成str之后还得转成byte 才能进行传输
data_str = parse.urlencode(login_form_data).encode('utf-8')
print(data_str)
login_request = urllib.request.Request(login_url, headers=headers, data=data_str)
opener.open(login_request)

# 如果登录成功 cookjar自动保存cookie


# 2.代码带着cookie去访问  个人中心
center_url = "https://www.yaozh.com/member/"
center_request = urllib.request.Request(center_url, headers=headers)

response = opener.open(center_url)
# byte -> str
data = response.read().decode('utf-8')

with open('02cook.html', 'w', encoding='utf-8') as f:
    f.write(data)

你可能感兴趣的:(分布式爬虫)