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访问MySQL封装的常用类实例
Nov 11 Python
浅谈python中列表、字符串、字典的常用操作
Sep 19 Python
一篇文章读懂Python赋值与拷贝
Apr 19 Python
可能是最全面的 Python 字符串拼接总结【收藏】
Jul 09 Python
Python实现的各种常见分布算法示例
Dec 13 Python
python求加权平均值的实例(附纯python写法)
Aug 22 Python
python子线程退出及线程退出控制的代码
Oct 16 Python
Pytorch 实现计算分类器准确率(总分类及子分类)
Jan 18 Python
django-crontab实现服务端的定时任务的示例代码
Feb 17 Python
使用Python对Dicom文件进行读取与写入的实现
Apr 20 Python
用Python 执行cmd命令
Dec 18 Python
Python中常见的反爬机制及其破解方法总结
Jun 10 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
深入了解 register_globals (附register_globals=off 网站打不开的解决方法)
2012/06/27 PHP
通过PHP current函数获取未知字符键名数组第一个元素的值
2013/06/24 PHP
php读取csv文件后,uft8 bom导致在页面上显示出现问题的解决方法
2013/08/10 PHP
javascript 写类方式之二
2009/07/05 Javascript
40个有创意的jQuery图片、内容滑动及弹出插件收藏集之一
2011/12/31 Javascript
javascript数组去重的六种方法汇总
2015/08/16 Javascript
工厂模式在JS中的实践
2017/01/18 Javascript
原生js实现回复评论功能
2017/01/18 Javascript
Angular 表单控件示例代码
2017/06/26 Javascript
vue 2.0封装model组件的方法
2017/08/03 Javascript
详解Angular2表单-模板驱动的表单(Template-Driven Forms)
2017/08/04 Javascript
解决修复npm安装全局模块权限的问题
2018/05/17 Javascript
javascript中call,apply,callee,caller用法实例分析
2019/07/24 Javascript
微信小程序按钮点击动画效果的实现
2019/09/04 Javascript
layui自定义验证,用ajax查询后台是否有重复数据,form.verify的例子
2019/09/06 Javascript
vue中的.$mount('#app')手动挂载操作
2020/09/02 Javascript
js实现简单的随机点名器
2020/09/17 Javascript
Python Queue模块详解
2014/11/30 Python
基于Python的关键字监控及告警
2017/07/06 Python
Python及Django框架生成二维码的方法分析
2018/01/31 Python
python Pandas 读取txt表格的实例
2018/04/29 Python
浅析Python数据处理
2018/05/02 Python
python使用matplotlib模块绘制多条折线图、散点图
2020/04/26 Python
python实现淘宝秒杀脚本
2020/06/23 Python
python实现烟花小程序
2019/01/30 Python
如何使用Django Admin管理后台导入CSV
2020/11/06 Python
python从ftp获取文件并下载到本地
2020/12/05 Python
使用HTML5 Canvas API中的clip()方法裁剪区域图像
2016/03/25 HTML / CSS
使用phonegap检测网络状态的方法
2017/03/30 HTML / CSS
Web前端页面跳转并取到值
2017/04/24 HTML / CSS
VELTRA台湾:世界自由行专家
2017/08/15 全球购物
Ivory Isle Designs美国/加拿大:婚礼和活动文具公司
2018/08/21 全球购物
全球异乡人的跨境社交电商平台:Kouhigh口嗨网
2020/07/24 全球购物
保安岗位职责
2014/02/21 职场文书
mysql 数据插入优化方法之concurrent_insert
2021/07/01 MySQL
vue自定义右键菜单之全局实现
2022/04/09 Vue.js