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中decorator使用实例
Apr 14 Python
Python实现爬取逐浪小说的方法
Jul 07 Python
Python selenium 父子、兄弟、相邻节点定位方式详解
Sep 15 Python
基于Python_脚本CGI、特点、应用、开发环境(详解)
May 23 Python
Python实现返回数组中第i小元素的方法示例
Dec 04 Python
使用Python 正则匹配两个特定字符之间的字符方法
Dec 24 Python
python实现淘宝秒杀脚本
Jun 23 Python
python读写Excel表格的实例代码(简单实用)
Dec 19 Python
使用Python爬取Json数据的示例代码
Dec 07 Python
Python如何使用神经网络进行简单文本分类
Feb 25 Python
Python 实现绘制子图及子图刻度的变换等问题
May 31 Python
常用的Python代码调试工具总结
Jun 23 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 定义404页面的实现代码
2012/11/19 PHP
php 生成自动创建文件夹并上传文件的示例代码
2014/03/07 PHP
jQuery UI Autocomplete 1.8.16 中文输入修正代码
2012/04/16 Javascript
关于JavaScript中string 的replace
2013/04/12 Javascript
jquery及原生js获取select下拉框选中的值示例
2013/10/25 Javascript
JS对象与json字符串格式转换实例
2014/10/28 Javascript
jQuery中extend函数详解
2015/02/13 Javascript
在easyUI开发中,出现jquery.easyui.min.js函数库问题的解决办法
2015/09/11 Javascript
react学习笔记之state以及setState的使用
2017/12/07 Javascript
微信小程序使用wxParse解析html的方法教程
2018/07/06 Javascript
vue.js 中使用(...)运算符报错的解决方法
2018/08/09 Javascript
JQuery实现ajax请求的示例和注意事项
2018/12/10 jQuery
ligerUI的ligerDialog关闭刷新的方法
2019/09/27 Javascript
这样回答继承可能面试官更满意
2019/12/10 Javascript
[03:03]DOTA2校园争霸赛 济南城市决赛欢乐发奖活动
2013/10/21 DOTA
简单文件操作python 修改文件指定行的方法
2013/05/15 Python
Python实现控制台输入密码的方法
2015/05/29 Python
python实现爬虫统计学校BBS男女比例之数据处理(三)
2015/12/31 Python
django反向解析URL和URL命名空间的方法
2018/06/05 Python
python定时检测无响应进程并重启的实例代码
2019/04/22 Python
Django项目之Elasticsearch搜索引擎的实例
2019/08/21 Python
Python3实现二叉树的最大深度
2019/09/30 Python
pytorch实现从本地加载 .pth 格式模型
2020/02/14 Python
Python 安装 virturalenv 虚拟环境的教程详解
2020/02/21 Python
详解Python 函数参数的拆解
2020/09/02 Python
澳大利亚网上书店:QBD
2021/01/09 全球购物
面向对象编程是如何提高软件开发水平的
2014/05/06 面试题
yy结婚证婚词
2014/01/10 职场文书
给领导的致歉信范文
2014/01/13 职场文书
汽车机电维修工求职信
2014/09/30 职场文书
公安局班子个人对照检查材料思想汇报
2014/10/09 职场文书
信用卡收入证明范本
2015/06/12 职场文书
任长霞观后感
2015/06/16 职场文书
2015年教导处教学工作总结
2015/07/22 职场文书
晶体管单管来复再生式收音机
2021/04/22 无线电
Apache SkyWalking 监控 MySQL Server 实战解析
2022/09/23 Servers