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实现文件路径和url相互转换的方法
Jul 06 Python
python实现JAVA源代码从ANSI到UTF-8的批量转换方法
Aug 10 Python
python读取excel表格生成erlang数据
Aug 26 Python
zookeeper python接口实例详解
Jan 18 Python
python 实现selenium断言和验证的方法
Feb 13 Python
Python2与Python3的区别实例分析
Apr 11 Python
Python3+Appium安装使用教程
Jul 05 Python
Python利用requests模块下载图片实例代码
Aug 12 Python
Python面向对象之继承原理与用法案例分析
Dec 31 Python
django queryset相加和筛选教程
May 18 Python
Selenium webdriver添加cookie实现过程详解
Aug 12 Python
Python识别花卉种类鉴定网络热门植物并自动整理分类
Apr 08 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
中英文字符串翻转函数
2008/12/09 PHP
laravel开发环境homestead搭建过程详解
2020/07/03 PHP
JavaScript高级程序设计(第3版)学习笔记3 js简单数据类型
2012/10/11 Javascript
js算法中的排序、数组去重详细概述
2013/10/14 Javascript
纯js实现遮罩层效果原理分析
2014/05/27 Javascript
Node.js的特点和应用场景介绍
2014/11/04 Javascript
jQuery中animate()方法用法实例
2014/12/24 Javascript
Kendo Grid editing 自定义验证报错提示的解决方法
2016/11/18 Javascript
Vue.js组件tree实现无限级树形菜单
2016/12/02 Javascript
JS异步加载的三种实现方式
2017/03/16 Javascript
详解webpack2+node+react+babel实现热加载(hmr)
2017/08/24 Javascript
基于jQuery实现图片推拉门动画效果的两种方法
2017/08/26 jQuery
JavaScript生成一个不重复的ID的方法示例
2019/09/16 Javascript
Vue路由守卫之路由独享守卫
2019/09/25 Javascript
JavaScript碰撞检测原理及其实现代码
2020/03/12 Javascript
解决Vue的项目使用Element ui 走马灯无法实现的问题
2020/08/03 Javascript
vue使用video插件vue-video-player的示例
2020/10/03 Javascript
[07:38]2014DOTA2国际邀请赛 Newbee顺利挺进胜者组赛后专访
2014/07/15 DOTA
python删除特定文件的方法
2015/07/30 Python
Python网络爬虫中的同步与异步示例详解
2018/02/03 Python
使用python编写监听端
2018/04/12 Python
numpy使用fromstring创建矩阵的实例
2018/06/15 Python
python3实现字符串操作的实例代码
2019/04/16 Python
Python Socket多线程并发原理及实现
2020/12/11 Python
CSS3实现鼠标悬停显示扩展内容
2016/08/24 HTML / CSS
Woods官网:加拿大最古老、最受尊敬的户外品牌之一
2020/09/12 全球购物
SQL数据库笔试题
2016/03/08 面试题
信用社员工先进事迹材料
2014/02/04 职场文书
志愿者活动总结
2014/04/28 职场文书
客房领班岗位职责
2015/02/11 职场文书
青岛导游词
2015/02/12 职场文书
见习期个人总结
2015/03/05 职场文书
复兴之路展览观后感
2015/06/02 职场文书
使用jpa之动态插入与修改(重写save)
2021/11/23 Java/Android
Html5获取用户当前位置的几种方式
2022/01/18 HTML / CSS
使用JS前端技术实现静态图片局部流动效果
2022/08/05 Javascript