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 字典dict使用介绍
Nov 30 Python
Python中的进程分支fork和exec详解
Apr 11 Python
Python socket网络编程TCP/IP服务器与客户端通信
Jan 05 Python
python基础教程之匿名函数lambda
Jan 17 Python
详解python上传文件和字符到PHP服务器
Nov 24 Python
详解如何在python中读写和存储matlab的数据文件(*.mat)
Feb 24 Python
python实现简易通讯录修改版
Mar 13 Python
Python 实现数据结构-循环队列的操作方法
Jul 17 Python
python getopt模块使用实例解析
Dec 18 Python
PyCharm License Activation激活码失效问题的解决方法(图文详解)
Mar 12 Python
详解基于python的全局与局部序列比对的实现(DNA)
Oct 07 Python
python3实现飞机大战
Nov 29 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函数解决SQL injection
2006/12/09 PHP
php getimagesize 上传图片的长度和宽度检测代码
2010/05/15 PHP
windows下升级PHP到5.3.3的过程及注意事项
2010/10/12 PHP
SWFUpload与CI不能正确上传识别文件MIME类型解决方法分享
2011/04/18 PHP
PHP高级对象构建 工厂模式的使用
2012/02/05 PHP
php实现倒计时效果
2015/12/19 PHP
php基于dom实现读取图书xml格式数据的方法
2017/02/03 PHP
鼠标经过的文本框textbox变色
2009/05/21 Javascript
javascript 多种搜索引擎集成的页面实现代码
2010/01/02 Javascript
jQuery LigerUI 插件介绍及使用之ligerDrag和ligerResizable示例代码打包
2011/04/06 Javascript
浅析IE10兼容性问题(frameset的cols属性)
2014/01/03 Javascript
JavaScript实现url参数转成json形式
2016/09/25 Javascript
nodejs入门教程三:调用内部和外部方法示例
2017/04/24 NodeJs
使用vue制作FullPage页面滚动效果
2017/08/21 Javascript
JS实现电商放大镜效果
2017/08/24 Javascript
AngularJS 表单验证手机号的实例(非必填)
2017/11/12 Javascript
node实现基于token的身份验证
2018/04/09 Javascript
jQuery实现通过方向键控制div块上下左右移动的方法【测试可用】
2018/04/26 jQuery
jQuery+Datatables实现表格批量删除功能【推荐】
2018/10/24 jQuery
vue element-ui table组件动态生成表头和数据并修改单元格格式 父子组件通信
2019/08/15 Javascript
Windows下搭建python开发环境详细步骤
2020/07/20 Python
django 2.0更新的10条注意事项总结
2018/01/05 Python
keras模型可视化,层可视化及kernel可视化实例
2020/01/24 Python
H5最强接口之canvas实现动态图形功能
2019/05/31 HTML / CSS
使用数据结构给女朋友写个Html5走迷宫游戏
2019/11/26 HTML / CSS
详解移动端h5页面根据屏幕适配的四种方案
2020/04/15 HTML / CSS
JD Sports瑞典:英国领先的运动时尚商店
2018/01/28 全球购物
说一下mysql, oracle等常见数据库的分页实现方案
2012/09/29 面试题
公司业务员岗位职责
2014/03/18 职场文书
文体活动实施方案
2014/03/27 职场文书
品酒会策划方案
2014/05/26 职场文书
硕士生找工作求职信
2014/07/05 职场文书
群众路线剖析材料
2014/09/30 职场文书
2015年重阳节活动总结
2015/03/24 职场文书
2016党员干部廉政准则学习心得体会
2016/01/20 职场文书
Sql Server之数据类型详解
2022/02/28 SQL Server