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基础教程之缩进介绍
Aug 29 Python
浅谈Python中列表生成式和生成器的区别
Aug 03 Python
Python数据分析之双色球统计单个红和蓝球哪个比例高的方法
Feb 03 Python
Python实现定时备份mysql数据库并把备份数据库邮件发送
Mar 08 Python
python 中xpath爬虫实例详解
Aug 26 Python
Django 自动生成api接口文档教程
Nov 19 Python
python getopt模块使用实例解析
Dec 18 Python
pytorch中的上采样以及各种反操作,求逆操作详解
Jan 03 Python
Python类中self参数用法详解
Feb 13 Python
django表单中的按钮获取数据的实例分析
Jul 31 Python
利用Python第三方库实现预测NBA比赛结果
Jun 21 Python
Python多线程 Queue 模块常见用法
Jul 04 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
从零开始学YII2框架(五)快速生成代码工具 Gii 的使用
2014/08/20 PHP
PHP 的Opcache加速的使用方法
2017/12/29 PHP
PHP检查端口是否可以被绑定的方法示例
2018/08/09 PHP
PHP+jQuery实现双击修改table表格功能示例
2019/02/21 PHP
javascript引用对象的方法
2007/01/11 Javascript
JQuery获取或设置ckeditor的数据(示例代码)
2013/11/15 Javascript
jquery检测input checked 控件是否被选中的方法
2014/03/26 Javascript
jquery中$(#form :input)与$(#form input)的区别
2014/08/18 Javascript
JS实现自动固定顶部的悬浮菜单栏效果
2015/09/16 Javascript
使用React实现轮播效果组件示例代码
2016/09/05 Javascript
jquery实现图片平滑滚动详解
2017/03/22 jQuery
VUE元素的隐藏和显示(v-show指令)
2017/06/23 Javascript
axios进阶实践之利用最优雅的方式写ajax请求
2017/12/20 Javascript
jQuery实现鼠标移到某个对象时弹出显示层功能
2018/08/23 jQuery
Node.js 深度调试方法解析
2020/07/28 Javascript
[12:51]71泪洒现场!是DOTA2让经典重现
2014/03/24 DOTA
[00:52]黑暗之门更新 新英雄孽主驾临DOTA2
2016/08/24 DOTA
wxPython学习之主框架实例
2014/09/28 Python
基于python神经卷积网络的人脸识别
2018/05/24 Python
python 协程中的迭代器,生成器原理及应用实例详解
2019/10/28 Python
用python画一只可爱的皮卡丘实例
2019/11/21 Python
Pycharm安装Qt Design快捷工具的详细教程
2020/11/18 Python
为您搜罗全球潮流時尚品牌:HBX
2019/12/04 全球购物
NET程序员上机面试题
2015/05/23 面试题
管道维修工岗位职责
2013/12/27 职场文书
大学生家政服务项目创业计划书
2014/01/30 职场文书
校园联欢晚会主持词
2014/03/17 职场文书
励志演讲稿600字
2014/08/21 职场文书
四风问题对照检查材料
2014/09/22 职场文书
中学生检讨书范文
2014/11/03 职场文书
大学生毕业评语
2014/12/31 职场文书
运动会口号霸气押韵
2015/12/24 职场文书
《穷人》教学反思
2016/02/19 职场文书
mysql的MVCC多版本并发控制的实现
2021/04/14 MySQL
Python requests用法和django后台处理详解
2022/03/19 Python
MySQL远程无法连接的一些常见原因总结
2022/09/23 MySQL