美文网首页
python爬虫8:cookies

python爬虫8:cookies

作者: Iphone60Plus | 来源:发表于2020-05-22 09:41 被阅读0次

    cookies是什么?
    cookies是服务器为标记用户,存储在本地的数据,里面包含登录数据,同时具有时效性,过期即失效。

    image.png

    session是什么?
    session是会话过程中,服务器用来登录会话的信息

    image.png

    session和cookies的关系?
    cookies里有session编码信息,服务器通过cookies辩认用户,同时返回和这个用户相关的特定编码的session

    image.png image.png image.png

    session和cookies存在的意义?
    HTTP是无状态的协议,一旦服务器和浏览器断开联接,即为无状态。没有session和cookies,服务器永远也记不住用户的信息,session和cookies解决了这一世纪难题。
    案例:购物网站可根据你的浏览信息,分析推送用户感兴趣的商品。

    import requests,json
    session = requests.session()
    #创建会话。
    headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36'
    }
    #添加请求头,避免被反爬虫。
    try:
    #如果能读取到cookies文件,执行以下代码,跳过except的代码,不用登录就能发表评论。
        cookies_txt = open('cookies.txt', 'r')
        #以reader读取模式,打开名为cookies.txt的文件。
        cookies_dict = json.loads(cookies_txt.read())
        #调用json模块的loads函数,把字符串转成字典。
        cookies = requests.utils.cookiejar_from_dict(cookies_dict)
        #把转成字典的cookies再转成cookies本来的格式。
        session.cookies = cookies
        #获取会话下的cookies
    
    except FileNotFoundError:
    #如果读取不到cookies文件,程序报“FileNotFoundError”(找不到文件)的错,则执行以下代码,重新登录获取cookies,再评论。
    
        url = ' https://wordpress-edu-3autumn.localprod.oc.forchange.cn/wp-login.php'
        #登录的网址。
        data = {'log': input('请输入你的账号:'),
                'pwd': input('请输入你的密码:'),
                'wp-submit': '登录',
                'redirect_to': 'https://wordpress-edu-3autumn.localprod.oc.forchange.cn',
                'testcookie': '1'}
        #登录的参数。
        session.post(url, headers=headers, data=data)
        #在会话下,用post发起登录请求。
    
        cookies_dict = requests.utils.dict_from_cookiejar(session.cookies)
        #把cookies转化成字典。
        cookies_str = json.dumps(cookies_dict)
        #调用json模块的dump函数,把cookies从字典再转成字符串。
        f = open('cookies.txt', 'w')
        #创建名为cookies.txt的文件,以写入模式写入内容
        f.write(cookies_str)
        #把已经转成字符串的cookies写入文件
        f.close()
        #关闭文件
    
    url_1 = 'https://wordpress-edu-3autumn.localprod.oc.forchange.cn/wp-comments-post.php'
    #文章的网址。
    data_1 = {
    'comment': input('请输入你想评论的内容:'),
    'submit': '发表评论',
    'comment_post_ID': '13',
    'comment_parent': '0'
    }
    #评论的参数。
    session.post(url_1, headers=headers, data=data_1)
    #在会话下,用post发起评论请求。
    

    相关文章

      网友评论

          本文标题:python爬虫8:cookies

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