Python爬虫使用脚本登录Github并查看信息


Posted in Python onJuly 16, 2018

前言分析目标网站的登录方式

目标地址: https://github.com/login   

登录方式做出分析:

第一,用form表单方式提交信息,

第二,有csrf_token,

第三 ,是以post请求发送用户名和密码时,需要第一次get请求的cookie

第四,登录成功以后,请求其他页面是只需要带第一次登录成功以后返回的cookie就可以。

以get发送的请求获取我们想要的token和cookie

Python爬虫使用脚本登录Github并查看信息

Python爬虫使用脚本登录Github并查看信息

代码:

import requests  
from bs4 import BeautifulSoup
r1 = requests.get('https://github.com/login')
soup = BeautifulSoup(r1.text,features='lxml') #生成soup 对象
s1 = soup.find(name='input',attrs={'name':'authenticity_token'}).get('value') 
#查到我们要的token
r1_cookies = r1.cookies.get_dict() # 下次提交用户名时用的cookie
# print(r1_cookies)  
# print(s1)

#结果::

{'logged_in': 'no', '_gh_sess': 'VDFWa2hJWjFMb1hpRUFLRDVhUmc3MXg1Tk02TDhsUnhDMERuNGpyT2Y4STlQZ2xCV1lCZEFhK21wdFR1bkpGYUV0WEJzcDEydWFzcm93
aVc4Nk91Q2JicmtRV0NIQ0lRSWM4aFhrSVFYbCtCczBwdnhVN0YySVJJNUFpQnhyTzNuRkJwNDJZUWxUcEk2M2JkM3VSMDdXVHNOY1htQkthckJQZDJyUVR2RzBNUkU3VnltRVF2U
m1admU3c3YzSGlyVnVZVm0ycnA1eUhET1JRVWNLN0pSbndKWjljMGttNG5URWJ1eU8rQjZXNEMxVEthcGVObDFBY2gvc2ZzWXcvWWZab29wQWJyU0l6cmZscWhBQUlzYTA3dTRtb
3l1S0hDYytHY2V1SUhEWlZvVlZoSWZpTzBjNmlidFF2dzI2bWgtLTJON1lqbm5jWUtSYmtiVEM1clJPakE9PQ%3D%3D--897dbc36c123940c8eae5d86f276dead8318fd6c'}
pRz0wapEbu5shksGCeSN0FijWoU9ALw8EPUsXlqgcw1Ezirl0VbSKvkTYqIe8VhxhPH2H/uzGaV6XX+yjTGoVA==

获取这两个值就可以,进行下一步发送登录请求:

第二步post方式提交用户名密码

Python爬虫使用脚本登录Github并查看信息

Python爬虫使用脚本登录Github并查看信息

代码::

这个代码接着上面的get请求,只是post请求的部分,

r2 = requests.post(
  'https://github.com/session',
  data ={
    'commit':'Sign in',
    'utf8':'✓',
    'authenticity_token':s1,
    'login':'541756569@qq.com',
    'password':'用户名密码'         # 填上正确的用户名即可
  },
  cookies = r1.cookies.get_dict(),    # 这里需要第一次的cookie
)
print(r2.cookies.get_dict())   # 这个是成功以后的cookie

成功以后就返回登录页面的信息。

基于post登录成功后查看个人详情页。

这里只需要带着登录成功以后的cookie 就可以

#完整代码

import requests
from bs4 import BeautifulSoup
r1 = requests.get('https://github.com/login')
soup = BeautifulSoup(r1.text,features='lxml')
s1 = soup.find(name='input',attrs={'name':'authenticity_token'}).get('value')
r1_cookies = r1.cookies.get_dict()
print(r1_cookies)
print(s1)
r2 = requests.post(
  'https://github.com/session',
  data ={
    'commit':'Sign in',
    'utf8':'✓',
    'authenticity_token':s1,
    'login':'541756569@qq.com',
    'password':'密码'
  },
  cookies = r1.cookies.get_dict(),
)

查看个人详情页

print(r2.cookies.get_dict())
 r3 = requests.get(
    'https://github.com/13131052183/product',  #查看个人的详情页
    cookies = r2.cookies.get_dict()
 )
 print(r3.text)

总结

以上所述是小编给大家介绍的Python爬虫使用脚本登录Github并查看信息,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Python 相关文章推荐
netbeans7安装python插件的方法图解
Dec 24 Python
Python设计模式编程中Adapter适配器模式的使用实例
Mar 02 Python
Python 编码处理-str与Unicode的区别
Sep 06 Python
Python基于贪心算法解决背包问题示例
Nov 27 Python
Python科学计算包numpy用法实例详解
Feb 08 Python
对Python3中列表乘以某一个数的示例详解
Jul 20 Python
如何在python中执行另一个py文件
Apr 30 Python
用Python爬取LOL所有的英雄信息以及英雄皮肤的示例代码
Jul 13 Python
python语音识别指南终极版(有这一篇足矣)
Sep 09 Python
python实现测试工具(二)——简单的ui测试工具
Oct 19 Python
python自动化八大定位元素讲解
Jul 09 Python
解决IDEA翻译插件Translation报错更新TTK失败不能使用
Apr 24 Python
django认证系统实现自定义权限管理的方法
Jul 16 #Python
Sanic框架路由用法实例分析
Jul 16 #Python
Sanic框架安装与简单入门示例
Jul 16 #Python
python 除法保留两位小数点的方法
Jul 16 #Python
Python自定义装饰器原理与用法实例分析
Jul 16 #Python
python 正确保留多位小数的实例
Jul 16 #Python
浅谈Python里面小数点精度的控制
Jul 16 #Python
You might like
WordPress中限制非管理员用户在文章后只能评论一次
2015/12/31 PHP
Yii2.0 模态弹出框+ajax提交表单
2016/05/22 PHP
告诉大家什么是JSON
2008/06/10 Javascript
JavaScript bold方法入门实例(把指定文字显示为粗体)
2014/10/17 Javascript
NodeJS学习笔记之FS文件模块
2015/01/13 NodeJs
使用jquery制作弹出框效果
2015/04/03 Javascript
jQuery+css3实现Ajax点击后动态删除功能的方法
2015/08/10 Javascript
jquery+正则实现统一的表单验证
2015/09/20 Javascript
Javascript编程中几种继承方式比较分析
2015/11/28 Javascript
关于JS中setTimeout()无法调用带参函数问题的解决方法
2016/06/21 Javascript
Vue 父子组件、组件间通信
2017/03/08 Javascript
vue2+el-menu实现路由跳转及当前项的设置方法实例
2017/11/07 Javascript
JS+Canvas绘制动态时钟效果
2017/11/10 Javascript
对node.js中render和send的用法详解
2018/05/14 Javascript
微信小程序实现多选删除列表数据功能示例
2019/01/15 Javascript
jQuery使用$.extend(true,object1, object2);实现深拷贝对象的方法分析
2019/03/06 jQuery
Vue路由管理器Vue-router的使用方法详解
2020/02/05 Javascript
JS实现小米轮播图
2020/09/21 Javascript
[03:14]DOTA2斧王 英雄基础教程
2013/11/26 DOTA
python实现发送邮件及附件功能
2021/03/02 Python
对Python 内建函数和保留字详解
2018/10/15 Python
Python实现字符型图片验证码识别完整过程详解
2019/05/10 Python
TensorFlow基于MNIST数据集实现车牌识别(初步演示版)
2019/08/05 Python
利用python在excel中画图的实现方法
2020/03/17 Python
详解torch.Tensor的4种乘法
2020/09/03 Python
HTML5 canvas基本绘图之文字渲染
2016/06/27 HTML / CSS
MATCHESFASHION.COM法国官网:英国奢侈品零售商
2018/01/04 全球购物
阿联酋网上花店:Ferns N Petals
2018/02/14 全球购物
软件测试工程师结构化面试题库
2016/11/23 面试题
家具促销活动方案
2014/02/16 职场文书
经理助理岗位职责
2014/03/05 职场文书
新品发布会策划方案
2014/06/08 职场文书
民族团结演讲稿范文
2014/08/27 职场文书
小学运动会报道稿
2014/10/04 职场文书
2019教师的学习计划
2019/06/25 职场文书
Nginx 常用配置
2022/05/15 Servers