最近学习python知识,刚好使用python写个例子获取一下乘风者计划的总阅读量
1.具体代码:
importrequests,json,sysimportpandasaspdimportnumpyasnpdefuse_pandas(data): """ 使用pandas格式输出 """df=pd.DataFrame(data) df=df.sort_values("pv") sum_line=df.sum() sum_line[:6] =np.nansum_line["createTime"] ="总计"df=df.append(sum_line,ignore_index=True).drop(['articleId','userId','uccId','showCreateTime','link'],axis=1).rename(columns={"title":"文章标题","pv":"浏览量","uv":"有效浏览量(ip)"}) print(df) defuse_default(data): """ 使用默认循环输出 """list= [{"pv":item['pv'],"uv":item['uv'],"title":item['title'],"status":item['status']['desc'],"time":item['createTime']} foritemindata] list.sort(key=lambdax:x['pv'],reverse=True) print_line(list) defprint_line(data): """ 默认方法下输出 """sum_pv=0sum_uv=0foriindata: print(i["title"],i["pv"],i["uv"]) sum_pv+=i["pv"] sum_uv+=i["uv"] print("总计文章%d篇,总浏览量%d,实际浏览量(ip)%d"%(len(data),sum_pv,sum_uv)) definit_request(): """ 请求文章参数 """# urlurl="https://developer.aliyun.com/developer/api/my/article/listUserArticles"# 参数 查询50条,如果文章超过50可以调整pageSize更大params= {"pageNum":1,"pageSize":50} # F12 找个请求抓一下cookieheaders= {"cookie":"cna=96urFwjx+GACASeilqd3n/R7; cps=zwYSodrSlqyGyCJI7u2gn2ebFjmv52Gp4fP3E0OUkWygO%2FVyx1gTM4B57P5xTQom; currentRegionId=cn-hangzhou; _ga=GA1.2.1090769455.1612852060; console_base_assets_version=3.28.2; aliyun_choice=CN; aliyun_lang=zh; UM_distinctid=17b28b596d46df-0f4132227e4ea4-4343363-1fa400-17b28b596d5e34; channel=d2Q0xQvU5P2I5QdQar%2FkoB8bJR34LNld96ejYso1kCk%3D; JSESSIONID=RFYJHYBV-ONVS8DOF3ZBET4ALSGTL3-8TBG37TK-MH324; maliyun_temporary_console0=1AbLByOMHeZe3G41KYd5Wf4QFzvM7jI4RWVTNJhwa5Fea5dBXFGA85maycwyW%2BBAe3JYA0hfH8R3v%2B0AolOGJxINHpbO4%2FoOQkxpozaqoVyfO7S4oYXQff4W1KUWIjI%2FaslfEhUXrEwbqP4tWO7nmQ%3D%3D; UC-XSRF-TOKEN=378a8120-c945-4225-8017-d7dd891cd8c6; _samesite_flag_=true; login_aliyunid_pk=1962712035129897; _hvn_login=6; login_aliyunid_ticket=DijB2uUHCKO2bsU9bgxuVgFRIxBof_BNpwU_TOTNChZBoeM1KJexdfb9zhYnsN5Zos6qISCrRt7mGxbigG2Cd4fWaCmBZHIzsgdZq64XXWQgyKFeuf0vpmV*s*CT58JlM_1t$w34x$TvGqKtPSlSDe4K0; login_aliyunid_luid=BG+D28Yw1O8deba817fa654d72d6835d63603e9a026+5hIJNaSTxH9ttNLvo0LUTIEzPEjtV6DsbDnZhP5w; login_aliyunid_csrf=_csrf_tk_1993530933875803; hssid=1HRiWsRr_mhsBO1tNMMnmZA1; hsite=6; aliyun_country=CN; aliyun_site=CN; login_aliyunid_abi=BG+2fCS7Siyf89dc556c87994764e280122632f5c3a+wMnKd+P+Pjmc22svOtXOd58srkX/luYMq6+Kzfr1cQpDFslOW3I=; login_aliyunid=%E5%BE%B7%E7%8E%9B%E8%A5%BF%E4%BA%9A%E6%89%80%E5%90%91%E6%8A%AB%E9%9D%A1; tfstk=cC4PBdXoeaQrru0CX4gFPZvnLlS5ZXFutElsqoLKYhV5mYoli7pKiHcsgXMOo0f..; l=eBP_xQDuOae7eMcUKOfwourza77OSIRAguPzaNbMiOCPOUXJ5e9GW63rVEtvCnGVh68kJ3SW3fIbBeYBqCYuqlAScqNvAHMmn; isg=BNfX4CVOehhmXMCFrWUKDa15ZkshHKt-XYfIfCkE86YNWPeaMOw7zpV2vvjGsIP2"} session=requests.Session() #请求withsessionassi: r=si.get(url,params=params,headers=headers) r.encoding="utf-8"text=json.loads(r.text) iftext.get("code")=="40001": print(r.text) print("cookie失效,请重新抓包") sys.exit(0) s=text.get("data").get("list") returnsif__name__=='__main__': s=init_request() # 默认方式use_default(s) # pandas方式use_pandas(s)
2.环境
2.1需要先安装python3环境
2.2再安装requests包
pip3installrequests
使用pandas方式需要安装pandas包,并将代码中的 pandas 和 numpy相关注掉
pip3installpandas
2.3抓包:
登录阿里云后,F12随便找个请求找到RequestBody中的cookie,复制即可
3.运行 python 文件名.py
命令行使用时需要关闭代理,否则报错
4.效果:
命令行不太美观,还带是jupyter好看:
pandas: