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标准库之多进程(multiprocessing包)介绍
Nov 25 Python
介绍Python中的文档测试模块
Apr 28 Python
使用Python写一个量化股票提醒系统
Aug 22 Python
利用python提取wav文件的mfcc方法
Jan 09 Python
python自动化之Ansible的安装教程
Jun 13 Python
Python替换月份为英文缩写的实现方法
Jul 15 Python
python输出数组中指定元素的所有索引示例
Dec 06 Python
pyftplib中文乱码问题解决方案
Jan 11 Python
python使用paramiko实现ssh的功能详解
Mar 06 Python
关于Python错误重试方法总结
Jan 03 Python
python利用appium实现手机APP自动化的示例
Jan 26 Python
Python TypeError: ‘float‘ object is not subscriptable错误解决
Dec 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
PHP $_FILES函数详解
2011/03/09 PHP
将php数组输出html表格的方法
2014/02/24 PHP
PHP中ltrim与rtrim去除左右空格及特殊字符实例
2016/01/07 PHP
PHP结合Ueditor并修改图片上传路径
2016/10/16 PHP
纯CSS3实现质感细腻丝滑按钮
2021/03/09 HTML / CSS
了解jQuery技巧来提高你的代码
2010/01/08 Javascript
jQuery+HTML5实现图片上传前预览效果
2015/08/20 Javascript
jQuery给指定的table动态添加删除行的操作方法
2016/10/12 Javascript
基于js实现的限制文本框只可以输入数字
2016/12/05 Javascript
详解JS中的立即执行函数
2017/02/24 Javascript
解决OneThink中无法异步提交kindeditor文本框中修改后的内容方法
2017/05/05 Javascript
js对象实例详解(JavaScript对象深度剖析,深度理解js对象)
2017/09/21 Javascript
webpack下实现动态引入文件方法
2018/02/22 Javascript
nodejs 日志模块winston的使用方法
2018/05/02 NodeJs
vue2过滤器模糊查询方法
2018/09/16 Javascript
vue.js父子组件通信动态绑定的实例
2018/09/28 Javascript
angular6 填坑之sdk的方法
2018/12/27 Javascript
JS数组Reduce方法功能与用法实例详解
2020/04/29 Javascript
vue实现折线图 可按时间查询
2020/08/21 Javascript
微信小程序学习之自定义滚动弹窗
2020/12/20 Javascript
Python中的模块和包概念介绍
2015/04/13 Python
Python实现利用最大公约数求三个正整数的最小公倍数示例
2017/09/30 Python
Python使用Tkinter实现机器人走迷宫
2018/01/22 Python
python字符串的拼接方法总结
2019/11/18 Python
django 链接多个数据库 并使用原生sql实现
2020/03/28 Python
python如何写个俄罗斯方块
2020/11/06 Python
Python实现FTP文件定时自动下载的步骤
2020/12/19 Python
利用CSS3实现折角效果实例源码
2016/09/28 HTML / CSS
《沉香救母》教学反思
2014/04/19 职场文书
文明城市创建标语
2014/06/16 职场文书
2014最新离职证明范本
2014/09/12 职场文书
教师批评与自我批评剖析材料
2014/10/16 职场文书
小学六一儿童节活动总结
2015/05/05 职场文书
拔河比赛新闻稿
2015/07/17 职场文书
党性修养心得体会2016
2016/01/21 职场文书
python glom模块的使用简介
2021/04/13 Python