爬虫之模拟登陆

模拟登陆

笔记

1.模拟登陆:爬取基于某些用户的用户信息。
2.需求:对人人网进行模拟登陆。
- ①点击登陆按钮之后会发起一个post请求
- ②post请求中会携带登陆之前录入的相关的登陆信息(用户名,密码,验证码…)
- ③验证码:每次请求都会动态变化

3.需求:爬取当前用户的相关的用户信息(个人主页中显示的用户信息)

4.http/https协议特性:无状态。

5.没有请求到对应页面数据的原因:发起的第二次基于个人主页页面请求的时候,服务器端并不知道此请求时基于登录状态下的请求

6.cookie:用来让服务器端记录客户端的相关状态。

  • 手动处理:通过抓包工具获取cookie值,将该值封装到headers中(不建议)
  • 自动处理:
  • cookie值的来源是哪里?
    • 模拟登陆post请求后,由服务器端创建
    • session会话对象:
      • ①作用:1.可以进行请求的发送;2.如果请求过程中产生了cookie,则该cookie会被自动存储/携带在该session对象中
      • ②创建一个session对象:session=requests.Session()
      • ③使用session对象进行模拟登陆post请求进行发送(cookie就会被存储在session中)
      • ④session对象对个人主页对应的get请求进行发送(携带了cookie)

7.代理:破解ip这种反爬机制
① 什么是代理:代理服务器
② 代理的作用:突破自身ip访问的限制;可以隐藏自身真实ip免受攻击
③ 代理ip的类型:-http:应用到http协议对应的url中; -https:应用到https协议对应的url中
④代理ip的匿名度:
透明:服务器知道该次请求使用了代理,也知道请求对应的真实ip
匿名:知道使用了代理,不知道真实ip
高匿:不知道使用了代理,更不知道真实的ip

实战

模拟登陆人人网

在这里插入图片描述
在这里插入图片描述

import requests
from lxml import etree
from CodeClass import Chaojiying_Client

def getCodeText(imgPath, codeType):
    chaojiying = Chaojiying_Client('用户名', '密码', '软件ID')  # 用户中心>>软件ID 生成一个替换 96001
    im = open(imgPath, 'rb').read()  # 本地图片文件路径 来替换 a.jpg 有时WIN系统须要//
    return chaojiying.PostPic(im, codeType)  # 1902 验证码类型  官方网站>>价格体系 3.4+版 print 后要加())
   
#1.对验证码图片进行捕获和识别
url = 'http://www.renren.com/SysHome.do'
headers = {
   
    'User-Agent':
        'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:86.0) Gecko/20100101 Firefox/86.0',
}
page_text = requests.get(url = url,headers=headers).text
tree = etree.HTML(page_text)
code_img_src = tree.xpath('//*[@id="verifyPic_login"]/@src')[0]
code_img_data = requests.get(url=code_img_src,
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值