美文网首页
用urllib库来实现账号登录的网页请求

用urllib库来实现账号登录的网页请求

作者: 大风吹兮风清扬 | 来源:发表于2019-09-25 13:33 被阅读0次

    完整的功能:获取个人中心的界面

    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)
    

    相关文章

      网友评论

          本文标题:用urllib库来实现账号登录的网页请求

          本文链接:https://www.haomeiwen.com/subject/eggiuctx.html