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使用scrapy解析js示例
Jan 23 Python
Python中定时任务框架APScheduler的快速入门指南
Jul 06 Python
Python实现从log日志中提取ip的方法【正则提取】
Mar 31 Python
Django学习笔记之为Model添加Action
Apr 30 Python
Django ModelForm组件使用方法详解
Jul 23 Python
Python assert语句的简单使用示例
Jul 28 Python
python numpy生成等差数列、等比数列的实例
Feb 25 Python
python框架flask入门之环境搭建及开启调试
Jun 07 Python
python定义类的简单用法
Jul 24 Python
Django前后端分离csrf token获取方式
Dec 25 Python
安装pytorch时报sslerror错误的解决方案
May 17 Python
基于Python实现nc批量转tif格式
Aug 14 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令牌 Token改进版
2008/07/18 PHP
Javascript 布尔型分析
2008/12/22 Javascript
Jquery + Ajax调用webService实例代码(asp.net)
2010/08/27 Javascript
iphone safari不支持position fixed的解决方法
2012/05/04 Javascript
JavaScript高级程序设计 阅读笔记(十二) js内置对象Math
2012/08/14 Javascript
JavaScript的常见兼容问题及相关解决方法(chrome/IE/firefox)
2013/12/31 Javascript
express的中间件basicAuth详解
2014/12/04 Javascript
jQuery模拟物体自由落体运动(附演示与demo源码下载)
2016/01/21 Javascript
JavaScript版经典游戏之扫雷游戏完整示例【附demo源码下载】
2016/12/12 Javascript
JavaScript 过滤关键字
2017/03/20 Javascript
zTree jQuery 树插件的使用(实例讲解)
2017/09/25 jQuery
利用babel将es6语法转es5的简单示例
2017/12/01 Javascript
vuex 使用文档小结篇
2018/01/11 Javascript
JavaScript:ES2019 的新特性(译)
2019/08/08 Javascript
js实现上传图片并显示图片名称
2019/12/18 Javascript
JS图片懒加载的优点及实现原理
2020/01/10 Javascript
Vue 中获取当前时间并实时刷新的实现代码
2020/05/12 Javascript
VSCode插件安装完成后的配置(常用配置)
2020/08/24 Javascript
[00:23]DOTA2群星共贺开放测试 25日无码时代来袭
2013/09/23 DOTA
Python实现子类调用父类的方法
2014/11/10 Python
在Python程序中实现分布式进程的教程
2015/04/28 Python
python的keyword模块用法实例分析
2015/06/30 Python
python实现爬虫统计学校BBS男女比例之多线程爬虫(二)
2015/12/31 Python
Python pass详细介绍及实例代码
2016/11/24 Python
Python实现病毒仿真器的方法示例(附demo)
2020/02/19 Python
Application Cache未缓存文件无法访问无法加载问题
2014/05/31 HTML / CSS
巧克力领导品牌瑞士莲美国官网:Lindt Chocolate美国
2016/08/25 全球购物
澳大利亚购买太阳镜和眼镜网站:Glamoureyes
2020/09/22 全球购物
教师档案管理制度
2014/01/23 职场文书
国际贸易毕业生自荐书
2014/06/22 职场文书
生物学专业求职信
2014/07/23 职场文书
大明湖导游词
2015/02/03 职场文书
2015年酒店工作总结
2015/04/28 职场文书
六年级作文之自救
2019/12/19 职场文书
从np.random.normal()到正态分布的拟合操作
2021/06/02 Python
CentOS7环境下MySQL8常用命令小结
2022/06/10 Servers