潭州课堂25班:Ph201805201 爬虫基础 第十三课 cookie (课堂笔记)

# -*- coding: utf-8 -*-
# 斌彬电脑
# @Time : 2018/9/15 0015 4:52

#cookie 是服务器发给浏览器的特殊信息
# 可以理解为一个临时通行证
# 以 json 形式存放
# name:   cookie 的名称
# value:  coikie 的值
# domain:  可以使用此 cookie 的域名
# path:  可以使用此 cookie 的页面路径
# expires/Max-Age : cookie 的超时时间  默认是 session ,当浏览器关闭时失效
# secure :  设置是否只能通过 https 来传递此条 cookie


#  豆瓣登录
# 抓包 按F12,在输入账号,密码框中输入相应值后,点登录,
#  找到 302 页面跳转,这时所需要的数据就在这里 login

import requests
from lxml import etree


class DoubanSpider():
    def __init__(self,us,ps):
        self.session = requests.session()
        self.headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.81 Safari/537.36'}
        self.login_url = 'https://accounts.douban.com/login'
        self.us = us
        self.ps = ps

    def start_res(self):
        data = {
            'source': 'movie',
            'redir': 'https: // movie.douban.com / top250',
            'form_email': self.us,
            'form_password':self.ps,
            'login': '登录'
        }

        data2 = {
            'source': 'movie',
            'redir': 'https: // movie.douban.com / top250',
            'form_email': self.us,
            'form_password': self.ps,
            # ‘captcha - solution: input('--->>')
            # captcha - id: PwPK7lqB1EZNJMqYIkvzhVlM:en
            # login: 登录
        }
        res = self.session.post(self.login_url, data=data, headers = self.headers).content.decode()
        self.login_res(res)

    # 登录成功后获取页面内容
    def login_res(self,res):
        html = etree.HTML(res)
        # 如果登录成功,r 列表中有值,否则为空列表
        r = html.xpath( '//*[@id="db-global-nav"]/div/div[1]/ul/li[2]/a/span[1]/text()' )
        if r ==[]:
            print('登录失败')
        else:print('登录成功,当前账号为:%s' %r[0])

  

当要输入验证码时,要提交的值为data2,

其中  captcha - solution  的值为验证码

captcha - id 在页面源码中 ctrl  + f  搜索

 用 xpath  找到节点,可取其值

猜你喜欢

转载自www.cnblogs.com/gdwz922/p/9649784.html