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 相关文章推荐
Python3.6简单操作Mysql数据库
Sep 12 Python
如何在python中使用selenium的示例
Dec 26 Python
详解用TensorFlow实现逻辑回归算法
May 02 Python
python 利用文件锁单例执行脚本的方法
Feb 19 Python
Python实现KNN(K-近邻)算法的示例代码
Mar 05 Python
Django2 连接MySQL及model测试实例分析
Dec 10 Python
Python连接字符串过程详解
Jan 06 Python
浅谈tensorflow模型保存为pb的各种姿势
May 25 Python
Visual Studio code 配置Python开发环境
Sep 11 Python
Python APScheduler执行使用方法详解
Dec 10 Python
python之随机数函数的实现示例
Dec 30 Python
使用tkinter实现三子棋游戏
Feb 25 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
双料怀旧--SHARP GF515的维护、修理和简单调试
2021/03/02 无线电
PHP图片上传代码
2013/11/04 PHP
php下载excel无法打开的解决方法
2013/12/24 PHP
PHP写的资源下载防盗链类分享
2014/05/12 PHP
PHP中copy on write写时复制机制介绍
2014/05/13 PHP
Win2003+apache+PHP+SqlServer2008 配置生产环境
2014/07/29 PHP
浅谈php数组array_change_key_case() 函数和array_chunk()函数
2016/10/22 PHP
PHP编程求最大公约数与最小公倍数的方法示例
2017/05/29 PHP
jquery tools系列 expose 学习
2009/09/06 Javascript
JS批量修改PS中图层名称的方法
2014/01/26 Javascript
JS获取随机数函数可自定义最小值最大值
2014/05/08 Javascript
JavaScript学习笔记之基础语法
2015/01/22 Javascript
JavaScript中的方法重载实例
2015/03/16 Javascript
JavaScript正则表达式的分组匹配详解
2016/02/13 Javascript
JS模拟简易滚动条效果代码(附demo源码)
2016/04/05 Javascript
JS之相等操作符详解
2016/09/13 Javascript
基于node.js之调试器详解
2017/08/22 Javascript
vue写一个组件
2018/04/09 Javascript
JS实现数组深拷贝的方法分析
2019/03/06 Javascript
Vue 使用formData方式向后台发送数据的实现
2019/04/14 Javascript
vue计算属性无法监听到数组内部变化的解决方案
2019/11/06 Javascript
jQuery 图片查看器插件 Viewer.js用法简单示例
2020/04/04 jQuery
全网小程序接口请求封装实例代码
2020/11/06 Javascript
python用于url解码和中文解析的小脚本(python url decoder)
2013/08/11 Python
python3 字符串/列表/元组(str/list/tuple)相互转换方法及join()函数的使用
2019/04/03 Python
opencv3/python 鼠标响应操作详解
2019/12/11 Python
Window10上Tensorflow的安装(CPU和GPU版本)
2020/12/15 Python
中国高端家电购物商城:顺电
2018/03/04 全球购物
金融行业职业生涯规划范文
2014/01/17 职场文书
关于毕业的中学校园广播稿
2014/01/26 职场文书
《孔子拜师》教学反思
2014/02/24 职场文书
陈欧的广告词
2014/03/18 职场文书
环保建议书500字
2014/05/14 职场文书
思想政治表现评语
2015/01/04 职场文书
老公出轨后的保证书
2015/05/08 职场文书
python实现进度条的多种实现
2021/04/29 Python