# -*- coding: utf-8 -*-

"""

Created on Tue May 14 2019

@author: YangYang

"""

# 针对扇贝打卡数据统计和分析

# 只统计 单词、炼句、听力、阅读 四部分的数据,阅读不区分短语和文章

from urllib.request import urlopen

import datetime

import re

# 计算打卡的统计时间

now = datetime.datetime.now() # 输入查卡日期,默认是今天

# now = datetime.date(2019,5,13) # 输入查卡日期,自定义

time2 = datetime.timedelta(days=8) # 统计一个星期的数据

day_now = str(now).split(" ")[0]

day_end = now - time2

day_end = str(day_end).split(" ")[0]

ID_total = input("请输入你的扇贝ID:")

print('\n')

#ID_total = "16888030"

ID_total = ID_total.split(",") # 如果输入多个ID,用“,”分开

for ID in ID_total:

web = "https://www.shanbay.com/api/v1/checkin/user/"+str(ID)+"/"

shanbay = urlopen(web)

shanbay_data = shanbay.read().decode()

# 获取昵称

find_username = re.findall("username\".*?,",shanbay_data)[0]

username = str(find_username)[len("username\": \""):-2]

# 获取打卡数据

find_data = re.findall("\"stats\".*?track_object_img" ,shanbay_data)

find_start = "\"stats\": "

find_end = "\"track_object_img\""

num_today = "\"num_today\": "

used_time = "\"used_time\": "

# 初始化各项统计数据

count = 0

time_read = 0

time_listen = 0

time_bdc = 0

time_sentence = 0

count_read = 0

count_listen = 0

count_bdc = 0

count_sentence = 0

# 获取打卡天数

checkin_time = []

num_checkin_days = []

find_checkin = re.findall("\"checkin_time\".*?\"share_urls\"",shanbay_data)

for checkin in find_checkin:

shanbey_time = checkin.split(",")[0]

shanbey_days = checkin.split(",")[3]

checkin_time.append(str(shanbey_time)[len("\"checkin_time\": \""):len("\"checkin_time\": \"")+10])

num_checkin_days.append(str(shanbey_days)[len("\"num_checkin_days\": "):])

print("上周打卡情况:")

for data in find_data:

read = re.findall("\"read\":.*?}",data)

if read == []:

read = "{num_today\": 0, \"used_time\": 0.0}"

listen = re.findall("\"listen\":.*?}",data)

if listen == []:

listen = "{num_today\": 0, \"used_time\": 0.0}"

sentence = re.findall("\"sentence\":.*?}",data)

if sentence == []:

sentence = "{num_today\": 0, \"used_time\": 0.0}"

bdc = re.findall("\"bdc\":.*?}",data)

if bdc == []:

bdc = "{num_today\": 0, \"used_time\": 0.0}"

read_num = re.findall(r"\d+\.?\d*",str(read))[0]

read_time = re.findall(r"\d+\.?\d*",str(read))[1]

listen_num = re.findall(r"\d+\.?\d*",str(listen))[0]

listen_time = re.findall(r"\d+\.?\d*",str(listen))[1]

bdc_num = re.findall(r"\d+\.?\d*",str(bdc))[0]

bdc_time = re.findall(r"\d+\.?\d*",str(bdc))[1]

sentence_num = re.findall(r"\d+\.?\d*",str(sentence))[0]

sentence_time = re.findall(r"\d+\.?\d*",str(sentence))[1]

if checkin_time[count] >= day_now:

count += 1

elif checkin_time[count] > day_end:

# 统计总时间和各项时间

time_total = float(read_time)+float(listen_time)+float(bdc_time)+float(sentence_time);

time_read = time_read+float(read_time);

time_listen = time_listen+float(listen_time);

time_bdc = time_bdc+float(bdc_time);

time_sentence = time_sentence+float(sentence_time);

# 统计各项数目累计

count_read = count_read+float(read_num)

count_listen = count_listen+float(listen_num)

count_bdc = count_bdc+float(bdc_num)

count_sentence = count_sentence+float(sentence_num)

# 输出一周每日打卡情况

print("{},打卡{}天:阅读{}篇,听力{}句,单词{}个,炼句{}句,学习时间{}分钟".format(checkin_time[count],num_checkin_days[count],read_num,listen_num,bdc_num,sentence_num,time_total))

count += 1

else:

break

print('\n')

print("单词:{}分钟,总计{}个".format(time_bdc,count_bdc))

print("阅读:{}分钟,总计{}篇".format(time_read,count_read))

print("炼句:{}分钟,总计{}句".format(time_sentence,count_sentence))

print("听力:{}分钟,总计{}句".format(time_listen,count_listen))

print('\n')

print("打卡时长:{}分钟".format(time_read+time_sentence+time_bdc+time_listen))

input("Please ")

扇贝python课程打卡_Python爬虫:获取扇贝打卡信息相关推荐

  1. python爬取前程无忧_Python爬虫获取51job的51job代码,python,抓取,前程无忧

    为了结果直观,做的简单 网页地址: https://search.51job.com/list/180200,000000,0000,00,9,99,%25E6%25AD%25A6%25E6%25B1 ...

  2. python爬虫获取肯德基门店信息

    python爬虫获取肯德基门店信息 1.在谷歌浏览器中打开肯德基官网,进入餐厅查询页面 2.在搜索框中输入地区并按f12打开开发者工具 发现已经抓取到了一条Ajax请求,可以从中获取请求的url,以及 ...

  3. 某投诉网站爬虫-获取对应的投诉信息

    某投诉网站爬虫-获取对应的投诉信息 此爬虫原本是一道面试题,说难不难,说简单也不简单:因为站点的反爬机制,我现在也没摸清楚,不过目前看来应该是你在一段时间内访问数据超过对应的数量就会封ip 5-10分 ...

  4. 使用C#调用德卡 T10读卡器获取医保卡信息

    文章目录 前言 一.引用部分 1.引入 2.C#方法 前言 C#调用德卡 T10读卡器获取医保卡信息 一.引用部分 1.引入 代码如下 需要一个dll(DC_Reader.dll),一个ini文件(D ...

  5. 如何利用python爬虫获取网易云音乐某个歌手简介_Python 爬虫获取网易云音乐歌手信息...

    今天就先带大家爬取网易云音乐下的歌手信息并把数据保存下来. 爬取结果 环境 语言:Python 工具:Pycharm 导包 BeautifulSoup:用来解析源码,提取需要的元素. selenium ...

  6. python下载图片并保存_Python爬虫获取图片并下载保存至本地的实例

    1.抓取煎蛋网上的图片. 2.代码如下: import urllib.request import os #to open the url def url_open(url): req=urllib. ...

  7. python爬虫之js链接跳转抓取_Python爬虫获取页面所有URL链接过程详解

    如何获取一个页面内所有URL链接?在Python中可以使用urllib对网页进行爬取,然后利用Beautiful Soup对爬取的页面进行解析,提取出所有的URL. 什么是Beautiful Soup ...

  8. python爬虫结构化_python爬虫获取小区经纬度以及结构化地址

    本文实例为大家分享了python爬虫获取小区经纬度.地址的具体代码,供大家参考,具体内容如下 通过小区名称利用百度api可以获取小区的地址以及经纬度,但是由于api返回的值中的地址形式不同,所以可以首 ...

  9. python爬虫怎么下载图片到手机_python爬虫获取京东手机图片的图文教程

    如题,首先当然是要打开京东的手机页面 因为要获取不同页面的所有手机图片,所以我们要跳转到不同页面观察页面地址的规律,这里观察第二页页面 由观察可以得到,第二页的链接地址很有可能是 https://li ...

  10. python豆瓣电影需研究的问题_python爬虫获取豆瓣电影——多线程问题

    25 May 2015 GIL全称Global Interpreter Lock(全局解释器锁),它是在实现Python解析器(CPython)时所引入的一个概念.但是它并不是Python的特性.Py ...

最新文章

  1. 自动化神经网络理论进展缓慢,AutoML算法的边界到底在哪?
  2. iOS加入百度地图的几个问题
  3. 人类最强运载火箭诞生!马斯克吹的牛再次兑现!
  4. blender 3d打印_使用Blender和Python 3D打印连衣裙
  5. 重庆计算机教师招聘 专业技能测试什么,教师招聘考试面试,专业技能测试考什么?全在这了...
  6. 注册、注销与结束session变量
  7. 日记 [2008年01月05日]NTP 服务器
  8. 资源搜索神器 海量精品资源教程 大大啦啦资源神器
  9. torch中dataloader加速
  10. 163邮箱如何开启pop服务器端口,pop3端口号详情介绍
  11. iOS 数据库升级策略
  12. C语言-数组-读入学生信息统计各分数段人数并打印
  13. 没有网就不能和女朋友开视频了?有Python在!没网照样开视频!
  14. Nacos注册中心AP架构源码(Distro)下篇
  15. 【系】微信小程序云开发实战坚果商城-扩展篇
  16. 使用Arduino与L298N(红板) 驱动直流电机
  17. 个人大数据征信查询浅谈与撸待现象
  18. BZOJ.3551. [ONTAK2010]Peaks加强版
  19. 096-feedbro-2021-02-27
  20. 清理Windows系统的C盘空间

热门文章

  1. python使用joblib模块保存和加载机器学模型
  2. R语言glm模型预测(predict)过程及Error in eval(predvars, data, env) 错误原因
  3. Samtools安装与使用
  4. 一种PacBio测序数据组装得到的基因组序列的纠错方法
  5. 二十六、二叉树--查找指定节点
  6. Qt最新版5.14在Windows环境静态编译安装和部署的完整过程 VS 2019-Qt static link build Windows 32 bit/64 bit
  7. mysql a-z排序_mysql实现首字母从A-Z排序
  8. mysql的聚合函数综合案例_MySQL常用聚合函数详解
  9. 台式机BIOS被加密后密码忘记解决办法
  10. linux文件操作函数程序,linux 文件操作函数