python笔记--模拟登陆

浏览器通过cookie的方式来检验用户的登陆状态。

1.可以通过从浏览器复制cookie到headers来进行模拟登陆。cookie的获取和之前的UA获取方式一样。

import requests
from fake_useragent import UserAgent

mycookie_from_copy = ' '#这里填上从网页复制来的cookie信息

ua = UserAgent()
headers = {'User-Agent': ua.random,
           'Cookie': mycookie_from_copy
            }

'''
以下是登陆之后才能访问到的个人信息页面
'''

url = 'https://www.douban.com/people/146448257/'
data = requests.get(url, headers=headers)

print(data.status_code)
print(data.requests.headers)
print(data.text)

2.cookie 是有一定的有效期,过一段时间就会失败,每次手动获取笔记麻烦,因此还有另一种方法,通过表单模拟登陆。
以下图片的form data就是表单数据。这里写图片描述

只需要将表单数据提交给服务器即可通过认真而登陆成功。

import requests
import pickle
from fake_useragent import UserAgent
from bs4 import BeautifulSoup

def get_cookie_from_net():
    url = 'https://accounts.douban.com/login' 
    payload = {'source': 'None',
                'redir': 'https://www.douban.com/',
                #以下两项根据自己的账号密码填写
                'form_email': ' ',
                'form_password': ' ',
                'login': '登陆'
                }
    data = s.post(url , headers=headers, data=payload, verify=true)
    with open('cookies.douban', 'wb') as f:
        cookiedict = requests.utils.dict_from_cookiegar(s.cookies)
        pickple.dump(cookiedict, f)
    print("提交表单登陆,成功获取cookies...")
    return s.cookies

def get_cookie_from_file():
    with open('cookie.douban', 'rb') as f:
        cookiedict = pickle.load(f)
        cookies = requests.utils.cookiejar_from_dict(cookiedict)
    print("解析文件,成功获取cookies...")
    return cookies

def get_data(html):
    soup = BeautifulSoup(html.text, 'lxml')
    mydata = soup.select('#display')[0].get_text()
    return mydata 

def login_and_getdata():
    print('获取cookies...')
    try:
        s.cookies = get_cookie_from_file()
    except:
        print("从文件中获取cookies失败...\n正尝试提交表单登陆获取cookies...")
        s.cookies = get_cookie_from_net()
    html = s.get('https://www.douban.com/people/146448257/', headers = headers)
    data = get_data(html)
    print(data)


if __name__ == '__main__':
    s = requests.seesion()
    ua = UserAgent()
    headers = {'User-Agent': ua.random}

    login_and_getdata() 

该过程为,首先通过表单登陆,获取cookie; 然后将其保存至文件;之后直接从文件获取cookie,转给session对象s;最后进行数据获取操作。

(1)session:seesion对象能够跨请求保持某些参数。
(2)pickle:dump和load进行cookie文件操作。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值