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实现的ini文件操作类分享
Nov 20 Python
Python3里的super()和__class__使用介绍
Apr 23 Python
浅谈python对象数据的读写权限
Sep 12 Python
浅谈Python类里的__init__方法函数,Python类的构造函数
Dec 10 Python
Django卸载之后重新安装的方法
Mar 15 Python
Python遍历字典方式就实例详解
Dec 28 Python
OpenCV python sklearn随机超参数搜索的实现
Jan 17 Python
pytorch实现Tensor变量之间的转换
Feb 17 Python
使用celery和Django处理异步任务的流程分析
Feb 19 Python
QML实现钟表效果
Jun 02 Python
python中selenium库的基本使用详解
Jul 31 Python
Pandas搭配lambda组合使用详解
Jan 22 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函数serialize()与unserialize()用法实例
2014/11/06 PHP
php中bind_param()函数用法分析
2017/03/28 PHP
PHP CodeIgniter分页实例及多条件查询解决方案(推荐)
2017/05/20 PHP
thinkPHP框架动态配置用法实例分析
2018/06/14 PHP
PHP封装类似thinkphp连贯操作数据库Db类与简单应用示例
2019/05/08 PHP
THINKPHP5分页数据对象处理过程解析
2020/10/28 PHP
Jquery获得控件值的三种方法总结
2014/02/13 Javascript
介绍一个简单的JavaScript类框架
2015/06/24 Javascript
javascript insertAfter()定义与用法示例
2016/07/25 Javascript
textarea 在浏览器中固定大小和禁止拖动的实现方法
2016/12/03 Javascript
JavaScript变量作用域_动力节点Java学院整理
2017/06/27 Javascript
vue配置多页面的实现方法
2018/05/22 Javascript
JS工厂模式开发实践案例分析
2019/10/17 Javascript
[46:59]完美世界DOTA2联赛PWL S2 GXR vs Ink 第二场 11.19
2020/11/20 DOTA
Python中replace方法实例分析
2014/08/20 Python
详解Python中with语句的用法
2015/04/15 Python
Python cookbook(数据结构与算法)找到最大或最小的N个元素实现方法示例
2018/02/13 Python
Python 读取图片文件为矩阵和保存矩阵为图片的方法
2018/04/27 Python
python3 http提交json参数并获取返回值的方法
2018/12/19 Python
pandas DataFrame 删除重复的行的实现方法
2019/01/29 Python
python可视化篇之流式数据监控的实现
2019/08/07 Python
pyqt5数据库使用详细教程(打包解决方案)
2020/03/25 Python
ansible-playbook实现自动部署KVM及安装python3的详细教程
2020/05/11 Python
HTML5中的autofocus(自动聚焦)属性介绍
2014/04/23 HTML / CSS
HTML5实现页面切换激活的PageVisibility API使用初探
2016/05/13 HTML / CSS
美国网上眼镜供应商:LEOTONY(眼镜、RX太阳镜和太阳镜)
2017/10/31 全球购物
英国灯具和灯泡网上商店:Lights.co.uk
2018/02/02 全球购物
理想点亮人生演讲稿
2014/05/21 职场文书
班级文化标语
2014/06/23 职场文书
应届生找工作求职信
2014/06/24 职场文书
教师党的群众路线教育实践活动剖析材料
2014/10/09 职场文书
2014年志愿者工作总结
2014/11/20 职场文书
事业单位个人总结
2015/02/12 职场文书
统计员岗位职责范本
2015/04/14 职场文书
2015年幼儿教师个人工作总结
2015/05/20 职场文书
保护地球的宣传语
2015/07/13 职场文书