您当前的位置:首页 > 计算机 > 编程开发 > Python

python爬虫第五章:(2)模拟登陆

时间:11-05来源:作者:点击数:

cookie

cookie简介

Cookie:

类型为“小型文本文件”,是某些网站为了辨别用户身份,进行Session跟踪而储存在用户本地终端上的数据(通常经过加密),由用户客户端计算机暂时或永久保存的信息

cookie和爬虫关系

  • cookie不仅可以用于为服务器的用户身份信息储存和状态保持,还能够用于在爬虫大部分的反爬,在默认情况下爬虫只能请求 html文本资源,这意味着他们并不会主动完成浏览器保存cookie的操作,cookie反爬正是利用了这个特点。
  • sometimes,对一张页面进行数据请求的时候,如果请求的过程中不携带cookie的话,那么我们将无法请求正确的页面数据

破解cookie方法

  • 手动破解**(将cookie粘贴到header中,但是由于cookie是动态变化的,所以在以后运行中要时常修改,所以不推荐)

    header = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36 SLBrowser/7.0.0.5211 SLBChan/25"
        ,"cookie":'xq_a_token=f257b9741beeb7f05f6296e58041e56c810c8ef8; xqat=f257b9741beeb7f05f6296e58041e56c810c8ef8;xq_r_token=2e05f6c50e
    }
    
    
  • 自动破解

    Session可以向requests一样调用get,post发起指令,只不过如果在使用它的时候,发起请求的过程中如果存在cookie,cookie就会被自动存储在Session的对象中,那么下次再出现的时候就会自动发起,则就相当于自动携带当前cookie
    Session在调用时至少被调用两次
    第一次是使用Session是为了将cookie捕获且储存在Session中
    第二次是用携带者cookie的Session发起get,post请求

    import requests
    header = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36 SLBrowser/7.0.0.5211 SLBChan/25"
       }
    #关于url_1和url_2后面说明
    url_1='https://xueqiu.com/'
    url_2='https://stock.xueqiu.com/v5/stock/batch/quote.json?symbol=SH000001,SZ399001,SZ399006,SH000688,HKHSI,HKHSCEI,HKHSCCI,.DJI,.IXIC,.INX'
    
    #Session创建对象
    session=requests.Session()
    #将cookie存储在Session中
    session.get(url=url_1,headers=header)
    #用存储cookie后的Session进行get请求
    data=session.get(url=url_2,headers=header).text
    fp=open('test_1.html',mode="w+",encoding='utf-8')
    fp.write(data)
    fp.close()
    

cookie实例(1):登陆不需要验证码的

实例网站:https://xueqiu.com/

1.先进行页面的分析:

  • 相关的更多资讯数据是动态下载,滑轮滚动到底部的时候,会动态加载出更多的资讯信息。
  • 定位到ajax的数据包,提取出其请求的url,响应数据为json的资讯信息。(我们仅仅存储不解析用text)
  • 根据图片ajax的数据包:json
在这里插入图片描述

先进行常规化运行:

cookie实例(2):登陆不需要验证码的

1.先获取

在这里插入图片描述

2.登录账号和密码

在这里插入图片描述

3.看书架网站

在这里插入图片描述

4.书架的网址

在这里插入图片描述

5.代码

import requests
from lxml import etree

#会话
session=requests.session()

data={
    'loginName': '17325326950',
    'password': '17325326950xiao',
}

#1.登陆
url='https://passport.17k.com/ck/user/login'

headers={
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36'
}

ress=session.post(url=url,data=data,headers=headers)
ress1=ress.text
#print(ress1)

#print(ress.cookies) #看cookie

#2.拿书架上的数据
#刚才的哪个session中有cookie
#书架的网址
url2='https://user.17k.com/ck/author/shelf?page=1&appKey=2406394919'
resp=session.get(url=url2)

print(resp.json())
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门