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中pycurl库的用法实例
Sep 30 Python
Python易忽视知识点小结
May 25 Python
Python及PyCharm下载与安装教程
Nov 18 Python
python实现列表中由数值查到索引的方法
Jun 27 Python
Python中函数参数匹配模型详解
Jun 09 Python
python re模块匹配贪婪和非贪婪模式详解
Feb 11 Python
python tqdm 实现滚动条不上下滚动代码(保持一行内滚动)
Feb 19 Python
简单了解python调用其他脚本方法实例
Mar 26 Python
Django数据库操作之save与update的使用
Apr 01 Python
学习python需要有编程基础吗
Jun 02 Python
Django数据模型中on_delete使用详解
Nov 30 Python
Python作用域和名称空间的详细介绍
Apr 13 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 什么是PEAR?(第二篇)
2009/03/19 PHP
解析strtr函数的效率问题
2013/06/26 PHP
php绘制一条弧线的方法
2015/01/24 PHP
浅析php-fpm静态和动态执行方式的比较
2016/11/09 PHP
PHP简单实现循环链表功能示例
2017/11/10 PHP
Laravel 中创建 Zip 压缩文件并提供下载的实现方法
2019/04/02 PHP
PHP高并发和大流量解决方案整理
2019/12/24 PHP
执行iframe中的javascript方法
2008/10/07 Javascript
jQuery实现的立体文字渐变效果
2010/05/17 Javascript
jQuery)扩展jQuery系列之一 模拟alert,confirm(一)
2010/12/04 Javascript
js实现checkbox全选和反选示例
2014/05/01 Javascript
JavaScript简单遍历DOM对象所有属性的实现方法
2015/10/21 Javascript
jQuery实现文本框邮箱输入自动补全效果
2015/11/17 Javascript
DOM操作和jQuery实现选项移动操作的简单实例
2016/06/07 Javascript
Ext JS动态加载JavaScript创建窗体的方法
2016/06/23 Javascript
JS控制TreeView的结点选择
2016/11/11 Javascript
详解基于javascript实现的苹果系统底部菜单
2016/12/02 Javascript
jQuery扩展+xml实现表单验证功能的方法
2016/12/25 Javascript
老生常谈js中0到底是 true 还是 false
2017/03/08 Javascript
ThinkPHP+jquery实现“加载更多”功能代码
2017/03/11 Javascript
JS实现的点击表头排序功能示例
2017/03/27 Javascript
Vue中v-for的数据分组实例
2018/03/07 Javascript
浅谈VueJS SSR 后端绘制内存泄漏的相关解决经验
2018/12/20 Javascript
vue 插件的方法代码详解
2019/06/06 Javascript
[03:09]DOTA2亚洲邀请赛 LGD战队出场宣传片
2015/02/07 DOTA
Python+django实现文件下载
2016/01/17 Python
pygame游戏之旅 添加键盘按键的方法
2018/11/20 Python
在python3中实现更新界面
2020/02/21 Python
pandas to_excel 添加颜色操作
2020/07/14 Python
合作协议书范本
2014/04/17 职场文书
《得道多助,失道寡助》教学反思
2014/04/19 职场文书
数学考试作弊检讨书300字
2015/02/16 职场文书
五星级酒店前台接待岗位职责
2015/04/02 职场文书
民事纠纷协议书
2016/03/23 职场文书
使用pytorch实现线性回归
2021/04/11 Python
SpringBoot前端后端分离之Nginx服务器下载安装过程
2022/08/14 Servers