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中的with...as用法介绍
May 28 Python
Python使用正则表达式过滤或替换HTML标签的方法详解
Sep 25 Python
Windows下Anaconda2安装NLTK教程
Sep 19 Python
Python解决两个整数相除只得到整数部分的实例
Nov 10 Python
python广度优先搜索得到两点间最短路径
Jan 17 Python
Python爬虫实战之12306抢票开源
Jan 24 Python
python自动化测试之异常及日志操作实例分析
Nov 09 Python
python中的逆序遍历实例
Dec 25 Python
使用python实现名片管理系统
Jun 18 Python
python给list排序的简单方法
Dec 10 Python
python+opencv3.4.0 实现HOG+SVM行人检测的示例代码
Jan 28 Python
Python词云的正确实现方法实例
May 08 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伪静态写法附代码
2008/06/20 PHP
慎用preg_replace危险的/e修饰符(一句话后门常用)
2013/06/19 PHP
laravel5 Eloquent 实现事务方式
2019/10/21 PHP
javascript 有趣而诡异的数组
2009/04/06 Javascript
JS 分号引起的一段调试问题
2009/06/18 Javascript
jQuery学习笔记之基础中的基础
2015/01/19 Javascript
JavaScript对数组进行随机重排的方法
2015/07/22 Javascript
js验证框架之RealyEasy验证详解
2016/06/08 Javascript
jQuery实现iframe父窗体和子窗体的相互调用
2016/06/17 Javascript
详解vue2.0脚手架的webpack 配置文件分析
2017/05/27 Javascript
React Native仿美团下拉菜单的实例代码
2017/08/08 Javascript
Three.js实现浏览器变动时进行自适应的方法
2017/09/26 Javascript
js中apply和Math.max()函数的问题及区别介绍
2018/03/27 Javascript
微信小程序时间选择插件使用详解
2018/12/28 Javascript
vue中的mvvm模式讲解
2019/01/31 Javascript
浅谈Vue页面级缓存解决方案feb-alive(上)
2019/04/14 Javascript
Javascript 对象(object)合并操作实例分析
2019/07/30 Javascript
python实现远程通过网络邮件控制计算机重启或关机
2018/02/22 Python
Python FTP两个文件夹间的同步实例代码
2018/05/25 Python
Python3查找列表中重复元素的个数的3种方法详解
2020/02/13 Python
关于tf.TFRecordReader()函数的用法解析
2020/02/17 Python
解决pyecharts运行后产生的html文件用浏览器打开空白
2020/03/11 Python
python语言的优势是什么
2020/06/17 Python
python 基于卡方值分箱算法的实现示例
2020/07/17 Python
基于Python爬取股票数据过程详解
2020/10/21 Python
css3教程之倾斜页面
2014/01/27 HTML / CSS
wordpress添加Html5的表单验证required方法小结
2020/08/18 HTML / CSS
Ajax主要包含了哪些技术
2014/06/12 面试题
幼儿园老师寄语
2014/04/03 职场文书
2014组织生活会方案
2014/05/19 职场文书
防卫过当辩护词
2015/05/21 职场文书
孔繁森观后感
2015/06/10 职场文书
Python爬取科目四考试题库的方法实现
2021/03/30 Python
深度学习tensorflow基础mnist
2021/04/14 Python
MySQL分库分表详情
2021/09/25 MySQL
Apache Hudi的多版本清理服务彻底讲解
2022/03/31 Servers