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 相关文章推荐
Python实现的最近最少使用算法
Jul 10 Python
分析并输出Python代码依赖的库的实现代码
Aug 09 Python
django用户注册、登录、注销和用户扩展的示例
Mar 19 Python
numpy中的高维数组转置实例
Apr 17 Python
python http基本验证方法
Dec 26 Python
python GUI库图形界面开发之PyQt5下拉列表框控件QComboBox详细使用方法与实例
Feb 27 Python
利用OpenCV中对图像数据进行64F和8U转换的方式
Jun 03 Python
PyTorch安装与基本使用详解
Aug 31 Python
scrapy中如何设置应用cookies的方法(3种)
Sep 22 Python
几款好用的python工具库(小结)
Oct 20 Python
PyQT5速成教程之Qt Designer介绍与入门
Nov 02 Python
Sentry的安装、配置、使用教程(Sentry日志手机系统)
Jul 23 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
PHP:风雨欲来 路在何方?
2006/10/09 PHP
wiki-shan写的php在线加密的解密程序
2008/09/07 PHP
php生成过去100年下拉列表的方法
2015/07/20 PHP
PHP生成随机字符串实例代码(字母+数字)
2019/09/11 PHP
Laravel等框架模型关联的可用性浅析
2019/12/15 PHP
javascript 模拟JQuery的Ready方法实现并出现的问题
2009/12/06 Javascript
JQuery将文本转化成JSON对象需要注意的问题
2011/05/09 Javascript
基于jQuery中对数组进行操作的方法
2013/04/16 Javascript
JS解决ie6下png透明的方法实例
2013/08/02 Javascript
深入理解javascript严格模式(Strict Mode)
2014/11/28 Javascript
node.js中的fs.lchmod方法使用说明
2014/12/16 Javascript
JavaScript拖拽、碰撞、重力及弹性运动实例分析
2016/01/08 Javascript
JS正则表达式比较常见用法
2016/01/26 Javascript
Bootstrap轮播插件中图片变形的终极解决方案 使用jqthumb.js
2016/07/10 Javascript
jQuery Dialog 打开时自动聚焦的解决方法(两种方法)
2016/11/24 Javascript
js实现五星评价功能
2017/03/08 Javascript
ES6学习笔记之正则表达式和字符串正则方法分析
2017/04/25 Javascript
浅谈JavaScript find 方法不支持IE的问题
2017/09/28 Javascript
JS中通过url动态获取图片大小的方法小结(两种方法)
2018/10/31 Javascript
详解jQuery获取特殊属性的值以及设置内容
2018/11/14 jQuery
Vue运用transition实现过渡动画
2019/05/06 Javascript
vuex + keep-alive实现tab标签页面缓存功能
2019/10/17 Javascript
electron踩坑之dialog中的callback解决
2020/10/06 Javascript
Python字符串匹配算法KMP实例
2015/07/18 Python
在Django的模型中添加自定义方法的示例
2015/07/21 Python
Python实现的从右到左字符串替换方法示例
2018/07/06 Python
pytorch+lstm实现的pos示例
2020/01/14 Python
PyQt5 如何让界面和逻辑分离的方法
2020/03/24 Python
Under Armour瑞典官方网站:美国高端运动科技品牌
2018/11/21 全球购物
护理自荐信范文
2013/10/05 职场文书
国贸类专业毕业生的求职信分享
2013/12/08 职场文书
生产部岗位职责范文
2014/02/07 职场文书
舞蹈教育学专业求职信
2014/06/29 职场文书
银行求职自荐信
2014/06/30 职场文书
房产协议书范本
2014/10/18 职场文书
MySQL分区路径子分区再分区
2022/04/13 MySQL