python爬取动态页面并保存_使用Python自动登录SSO爬取动态页面

最近的项目在做一些数据方面的集成,五花八门的系统对应的接口更是千奇百怪,数据集成的过程总结成八个字就是:逢山开路,遇水架桥。

恰好这两天碰到一个问题,我们要集成的WEB系统没有提供专门的数据集成接口,没有API可以调,数据库更是不让访问,万般无奈之下,我在想是否可以用python自动爬取页面。web页面有SSO,用的应该是开源的CAS框架,并且后面的页面全都是由动态JS、AJAX异步加载进去的,这显然不像普通的静态页面那样直接用Scrapy上去就是一顿干,要完美的模拟登陆动作并且还要爬取后面的动态内容,对页面结构和爬取内容的分析是必不可少的。

工具Chrome

页面分析工具非常简单,只需要最新版本的Chrome浏览器即可

python3

requests

分析登录页面

打开登录页面,按F12打开Chrome自带的分析工具,在Network选卡上可以看到当前浏览器显示页面和提交登录信息的详情,如下图

AAffA0nNPuCLAAAAAElFTkSuQmCC

某网站登录页面

从截图上可以看到,当我们访问app/这个url的日志,因为我们还没有登录过,SSO会把我们自动重定向到登录页面,所以http status是302重定向。

接下来我们在页面上输入账号密码,点登录按钮,通过页面追踪分析并模拟整个登录过程,这个过程要尤其仔细,因为很多CAS在登录页面上埋了很多隐藏的标记,一个地方模仿的不对可能就会登录失败然后又被重定向到开始的地方。

AAffA0nNPuCLAAAAAElFTkSuQmCC

分析登录过程

从分析可以看到,登录按钮提交的时候会用POST方式提交一个表格,而表格里面的除了账号密码等显眼的字段以外还有一个lt,经验告诉我们这个字段应该隐藏在之前的登录页面上,用来校验登录页面的合法性,所以我们要从登录页面上找到并提取这个信息。同时还要注意http的消息头,最好按照浏览器抓取的消息头去构造,因为网站同样会校验这里面的信息。

下面是登录的主要代码,我们基于python3和requests

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值