精华内容
下载资源
问答
  • 最近经常上网的朋友会发现,有很流行的网络用语“网抑”,那么究竟这个网抑是什么意思呢,今天我们就一起来了解一下 首先“网抑”是指网易加的产品“网易”音乐,原因就是很多网友,在网易音乐评论...

    最近经常上网的朋友会发现,有个很流行的网络用语“网抑云”,那么究竟这个网抑云是什么意思呢,今天我们就一起来了解一下

     

    首先“网抑云”是指网易加的产品“网易云”音乐,原因就是很多网友,在网易云音乐评论地方发布大量抑郁情绪言论,每一个音乐评论都有一个悲情的故事,所以大家就慢慢的把网易云说出是网抑云,这可能也和丧文化的流行有很大的关系,毕竟最近两年年轻人的生活,学习,事业和工作情感各方面的压力都比较大,很喜欢这种丧文化。

     

    下面是网友很喜欢的一些网抑云语录大家一起来看一下:

    你笑得真漂亮,好像从没受过伤。

    你看到光,自以为是希望。以为能摆脱厄运。可到了最后发现,那竟是没有回声的山谷

    一个连崩溃都要顾及他人的人,是叫她懂事还是无能为力

    享受一个人的安稳,又期待两个人的热闹

    他抓了一把糖,逢人就发,你却偏说给你的那块最甜。

    下决心要忘了你可我现在好想你。

    不出现不打扰是我最后爱你的方式。

    .因为你太懂事,总是受委屈。

    人要是矫情起来,听什么歌都好像在唱自己。

    我点了保存文档,希望能给别人带去快乐,可我的快乐又在哪呢

    展开全文
  • “到点了,上号。”“网抑时间,兄弟们给我哭。”“生而为人,我很抱歉。”此话一出,就知道是“老网抑”了。突然间,网易被许多网友戏称为“网抑”,段子越来越多。抖音上“网抑”标签的...

    “到点了,上号。”

    “网抑云时间,兄弟们给我哭。”

    “生而为人,我很抱歉。”

     

    此话一出,就知道是“老网抑云”了。突然间,网易云被许多网友戏称为“网抑云”,段子越来越多。抖音上“网抑云”标签的话题下,视频播放量达到了4.6亿次,B站关于“网抑云”的创作视频也多了起来,最高的一则视频播放量达到675.1万,远高于该UP主平日其他视频。

     

    来源 / 抖音、B站

     

    网抑云何来?有人将“网抑云”这个梗解释为,网易云音乐评论区中存在较多抑郁情绪发言,甚至被称为“人均抑郁症”现象。

     

     

    一部分人将这里当成了树洞,还有一些人借着“网抑云”的梗进行虚拟创作,试图博取关注和同情,强行“抑郁”的风气盛起;一部分人是真的需要帮助,还有一部分人是用卖惨的人设赚取同情,以换得生活上的绿灯。

     

    针对“网抑云”现象,8月3日,网易云音乐做出回应:已推出“云村评论治愈计划”,邀请心理专家、万名心理专业志愿者加入“云村治愈所”,万名乐评达人组成云村乐评团发起乐评征集大赛;同时升级《云村公约》治理虚假编造内容,规范乐评礼仪,为真正有需要的用户提供专业帮助。两天后,网易云上线了 “抱抱”彩蛋功能,用户在任意歌曲评论区都可以通过两个手指捏合的方式,去“抱抱”其他用户的评论。

     

    官方抓住“网抑云”的梗,要把它变成网愈云,但网易云音乐作为一家音乐流媒体平台,有梗就行了吗?

     

    “网抑云时间到”

    每到凌晨十二点,“网抑云”时间到,便有很多网友在网易云音乐上有感而发。

     

    有网友将网易云音乐的评论区归结为三大派系,失恋交流、考研失败、痴汉幻想。几乎每一首音乐下面都有人爱而不得,正在经历失业或分手,离婚、酗酒、遭遇车祸或癌症,生活负债累累,甚至自杀失败等等。

     

    网易云音乐评论区部分截图 来源 / 网易云音乐App

     

    音乐和文学作品本身自带创作者的情感,容易引发出情感共鸣,一些网友在音乐评论区内抒发真实感受顺理成章。在网易云音乐运行初期,它的评论区被网友赞为是最治愈的地方,有网友称通过网易云音乐评论区寻找安慰、缓解压力,结交到了志同道合的朋友。

     

    “从心理学上讲,每个人都会有负面情绪,这种情绪在我们听歌的时候很容易被激发出来,引起共鸣。”国家二级心理咨询师、燕园心理咨询总监朱晓辉认为,网易云音乐评论区出现负面情绪,是很正常的事情,它成了人们倾诉的树洞。

     

     

    但不少人认为,现在的网易云音乐,已经逐渐演变成了一个宣泄浮躁和负面情绪的出口。

     

    一些用户开始恶搞,模仿起了一些抑郁患者的话术。“温柔吗?半条命换的” “有的人八岁埋了,八十岁才死。”网易云音乐评论区内充斥着各种丧文学段子。这种恶搞的行为,多数是由于网友对抑郁症患者的不理解,认为他们不过是在无病呻吟。

     

    很多杜撰的抑郁故事,将整个评论区带向了“人均抑郁”的怪象中。而其中也不乏刻意“卖惨”的行为,朱晓辉称,“卖惨”本身是心理学上“因病受益”概念的延伸,即利用别人对弱者的同情谋求自身利益。

     

    “网抑云”还被当成了博眼球的方式。在短视频平台上,一些博主通过搬运网抑云语录快速获取流量和用户。在抖音平台上搜索网易云音乐,除了官方授权账号外,还有一些取名为“网易云文案”“网易云热评”的账号,他们的内容多数是将网易云音乐热评剪辑成了一段视频,靠文案吸收粉丝后,再做进一步商业化行为,例如推歌、在购物车里挂取商品链接等。值得注意的是,一些博主挂取的商品和音乐并无太大关系。

    来源 / 抖音APP

     

    靠“社交”出圈

    一款音乐产品是怎么活成情感树洞的呢?

     

    在网易云音乐成立的2013年,丁磊给它的定位就是“可以随时听音乐,随时和他人分享音乐”。因此,在这款产品中,用户体验和社会化分享是它与其他音乐播放平台最大的差异。

     

    它最早的一次出圈,要从地铁营销说起。2017年网易云音乐在杭州地铁1号线印制了5000条点赞数量最高的音乐评论。

    假如生活出卖了我,我希望是论斤卖

    你的眼睛很美,不适合流泪

    如果每个人都能理解你,那你得普通成什么样子

     

    许多人驻足在网易云音乐评论的广告下,拍照分享,那是网易云音乐的辉煌时刻。网易云音乐爱好者搭建了天然的社交环境,越来越多的年轻人开始愿意在这里分享自己的情绪。据Questmoblie《Z世代洞察报告》和Mob研究院《Z世代大学生图鉴》发布的数据显示,网易云音乐以最高活跃用户占比和高TGI(用户偏好度)成为95后年轻人最喜爱的音乐App。

     

    除线下营销外,网易云在产品端也处处强化音乐+社交的模式。

     

    2019年8月,网易云音乐开始重点打造云村社区板块,并称其为“最重要战略”,以期打造UGC内容生态。彼时,网易云音乐CEO朱一闻称,“云村社区承载的是网易云音乐未来的差异化,或者说我们以前有很大的差异化,现在想把差异化放大。”

     

    网易云音乐中全新的"云村社区”

    来源/网易云音乐APP

     

    在2019年6月因涉嫌违反相关法律规定,经历了一次历时一个月的下架风波后,再次回归的网易云音乐上线了全新的”云村社区“,分为“广场”和“关注”两个选项,“广场”包括了云村热评墙、官方活动及Mlog流展示,“关注“中有好友推荐、动态发布和视频创作发布功能,能体现出网易云音乐用PGC模式生产专业内容,通过UGC模式激励普通用户的原创性内容生产和个性化表达,以提升用户粘性。

     

    在社交属性的推动下,网易云音乐保持了一定增速,据了解,网易云音乐上次披露用户数是在2019年第二季度财报,当时网易云音乐的总用户数已经突破了8亿,同比增长了50%,且网易云音乐付费有效会员数同比大涨135%。

     

    但问题是,对于绝大多数用户而言,音乐流媒体平台的核心不在于“社区”,而在于曲库。这也是如今“网抑云”一梗存在的根本原因所在。

     

    难越版权大山

    “一开始用的是QQ音乐,后来因为想听的翻唱版本在QQ音乐没有,就转去了网易云。后来发现,很多歌曲在网易云是没有版权的,于是又转回到了QQ音乐。” 一位知乎网友匿名评论道。

     

    在线音乐战场上,版权向来是兵家必争之地,拥有更多的歌曲版权,就意味着享有更多的市场份额。腾讯音乐、网易云音乐是绝对的头部玩家。

     

    2017年8月,这两家因为版权问题“打”起来了,网易云音乐上很多歌手的音乐突然间“变灰”了。原来是网易云音乐因为和腾讯音乐没有就版权转授权问题达成一致,歌曲被迫下架了。

     

    这场版权之争在5个月后,最终在国家版权局的调和下,老对手纷纷“冰释前嫌”,腾讯音乐、阿里音乐以及网易云音乐三方达成转授权协议,相互开放了99%的版权资源。

     

    但经历了多次大量歌曲无法播放的事件,不少网易云音乐用户因此流失到了腾讯音乐或阿里音乐旗下的平台。

     

    而且,即便是“99%以上的独家版权互授”,腾讯音乐也不可能把花钱买来的版权免费共享出来。

     

    腾讯音乐集团(TME)的2020年一季度财报显示,在线音乐服务付费用户人数高达4270万人,同比增长50.4%;在线音乐服务的ARPPU(平均付费用户收入)同比增长13.3%;总营收达63.1亿人民币(约合8.91亿美元),同比增长10%。

     

    而2020年Q1网易财报中,并未披露网易云音乐的具体数据,只是一句“报告期内网易云音乐净收入保持同比增长,付费会员数不断增加”带过。

     

    这两家就曾因为周杰伦的版权问题,有过摩擦。

     

    2018年4月1日,网易云音乐在周杰伦版权到期的情况下,将其上百首歌曲以“合集”的形式打包售卖,涉及违约行为。此后,周杰伦的版权方杰威尔音乐和腾讯音乐达成共识,暂停了与网易云音乐的转授权合作。2019年,此案件最终审理判决,网易云音乐等关联公司被判决侵权,并赔偿腾讯音乐经济损失及制止侵权的合理开支共计85万元。

     

    至此,网易云音乐失去了周杰伦歌曲的版权。有业内人士称,失去了顶流周杰伦的版权,相当于失去很大一部分的市场份额,而腾讯音乐就成了周杰伦音乐版权在流媒体领域的独家享有者,先后独家发布了《说好不哭》和《Mojito》,为腾讯音乐带来了极为可观的流量和收入。

     

    图 / 视觉中国

    目前国内在线音乐领域里,腾讯音乐占据半壁江山。根据TME官网显示,目前TME与国内外知名唱片公司均取得了战略合作关系,且获得了超过3000万首曲目的授权,与索尼音乐娱乐公司、环球音乐集团、华纳音乐集团、英皇娱乐集团、中国唱片集团有限公司等音乐厂牌达成了主发行及授权协议。

     

    相比之下,网易云音乐虽然一直在通过不断购买版权来扩充实力,但仍然没有足够亮眼的版权出现。

     

    2019年以来,网易云音乐先后拿下了吉卜力工作室、滚石唱片、华纳版权(WCM)、少城时代等四家重磅版权合作。此外,网易云音乐也已将《歌手·当打之年》、《我们的乐队》、《嗨唱转起来》、《声临其境》第三季国内多部热门综艺的音乐作品版权收入囊中。

     

    近日,更是被传出即将与环球音乐签约的消息。环球音乐为世界规模最大的唱片公司,以接近30%的市场份额领先于索尼音娱和华纳音乐。消息人士称,在今年5月听说了网易云音乐与环球音乐(UMG)进行版权合作谈判的消息,但具体合作细节尚不清楚。业内人士表示,此次签约并非独家版权合作形式。

     

    2017年5月,腾讯音乐集团(TME)获得了为期3年的环球音乐独家曲库内容和转授权许可,以及全球知名歌手资源的运营、推广、开发等权益。但值得一提的是,早在今年3月,腾讯音乐宣布由腾讯控股牵头的财团已完成收购环球音乐10%股权的交易。

     

    也就是说,网易云音乐与环球音乐的合作,某种程度上是向腾讯购买版权

     

    在线音乐,终究是A和B的战争

    “为什么网易云音乐版权那么少还是有很多人在用?”这是一位知乎网友提问,也代表了很多人的好奇。

     

    在版权上一直缺少底气的网易云音乐在用户数据上表现如何呢?

      

    来源 / 易观千帆

     

    一份易观千帆的报告显示,从月活用户数来看,腾讯音乐系(包括酷狗音乐、QQ音乐、酷我音乐)是绝对的头部。

     

    易观报告显示,2019年12月,音频娱乐行业月活规模达到84493万人,同比增长12.5%,而移动音乐领域月活规模为67249.3万人,同比增长7%。在整体用户增速减缓情况下,腾讯音乐集团(TME)实现了14.4%的月活规模增长,酷狗音乐、QQ音乐、酷我音乐加起来规模达到了58256.6万人。

     

    而网易云音乐则位列第四,月活为9049万人。阿里旗下的虾米音乐的月活仅为1351.8万人,位列第六。从用户方面看,能与腾讯音乐抗衡的也就只有网易云音乐了

     

    过去几年,阿里音乐在行业内的存在感越来越弱。2013年收购虾米音乐之后,阿里宣布成立音乐事业部,随后收购了天天动听音乐播放器,但由于管理层判断和决策的因素,天天动听的用户逐渐流失,虾米音乐的市场份额也不断下滑。

     

    在阿里大文娱自身所有音乐产品发展低迷的情况下,阿里选择了以资本注入的方式,绑定网易云音乐

     

    网易云音乐融资情况

    来源 / 天眼查App

     

    据天眼查App显示,网易云音乐最新一轮融资是在2019年9月,投资方为阿里巴巴、云锋基金。融资完成后,网易云音乐估值达到70亿美元。阿里占股比例约10%,但扶持意图明显。

     

    近日阿里“88VIP会员节”前夕,网易云音乐与阿里88VIP达成战略合作。阿里88VIP中出现了网易云音乐全年黑胶VIP会员的权益项。值得注意的是,这一音乐权益项需要用户在虾米音乐VIP和网易云音乐VIP之间二选一,而老用户享有一次选择更换为网易云音乐黑胶VIP年卡权益的机会,虾米VIP权益将会被回收。

     

    来源 / 淘宝App

     

    有业内人士称,此举从某种程度上也表明了阿里音乐和网易云音乐的深度绑定,而在88VIP节之前宣布达成合作,也足以显示出网易云音乐“献礼"的诚意。这也被解读为,网易云音乐在阿里音乐阵中的地位不输虾米,三家的战争变成了“A”和“B”的战争,在线音乐领域掀起了一轮巨头之间新的较量

    老胡科技

    ______

    ID:laohushuokeji

    长按图片,识别图中二维码,

    一起关注科技领域干货!

    你的分享和关注,是我前进的动力。

    运营人:老胡,知名互联网评论人士,观察家。沉积科技领域13年,历任《IT时代周刊》主笔,腾讯科技首席记者,迅雷、滴滴公关总监;写过大型书籍《黑马首富王传福》;他是中国科技自媒体top 10,2016自媒体人百强;【具备创造:10万+阅读,文章能力】;文章见今日头条、界面、钛媒体、新浪科技、搜狐、腾讯、网易、艾瑞等60余家顶级专栏,单篇文章曝光量百万,整体文章阅读量超过10亿;文章转载与商务合作请加个人微信号:taiyangfeixue。 

    展开全文
  • 2017-06-04 原来模块中不能的R.id.xxx,只能用UZResourcesIDFinder....引用layout资源文件的时候,我居然加了一xml UZResourcesIDFinder.getResLayoutID("mo_minivr_panframe_player.xml")死活找不到资源 改成...

    2017-06-04

    原来模块中不能的R.id.xxx,只能用UZResourcesIDFinder.getResIdID("mo_minivr_framecontainer")

    引用layout资源文件的时候,我居然加了一个xml    UZResourcesIDFinder.getResLayoutID("mo_minivr_panframe_player.xml")死活找不到资源

    改成UZResourcesIDFinder.getResLayoutID("mo_minivr_panframe_player")就好了。

    2017-06-07

    我以为String dataType = moduleContex.optString("dataType");如果没有传dataType的值的话,返回的应该是空对象null吧,哪知道不是,返回的为""。

    看来只能改为String dataType = moduleContex.optString("dataType", null);了

    2017-06-07

    apicloud模块原来是需要两种so包的,我用纯粹的安卓开发只要一种so包,就是armeabi。

    但apicloud模块需要两种,分别是armeabi和armeabi-v7a,我在做百度地图定位sdk开发的时候,

    发现只上传armeabi的话,百度提示NetWork location failed because baidu location service can not decrypt the request query, please check the so file !

    2017-08-12

    xib文件需要放到target目录里面。

    xib文件和资源文件需要放到target的根目录里,不能放到target的子目录里

    资源文件不能放到res_xxx目录下。

    2018-06-25

    最新版的xcode害死人,又浪费了我好多时间。

    新建静态工程后,这里总是默认的最高版本,可能是11.4

    而APICloud模块开发需要较低版本,7或8

    2018-09-22

    本地打包可以,放到云编译就报错

    09-22 15:14:06.805 23432-23432/com.channelsoft.nncc E/app3c: sorry, we have catch a crash log
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.channelsoft.nncc/com.unionpay.uppay.PayActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'long java.io.InputStream.skip(long)' on a null object reference
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2725)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2786)
    at android.app.ActivityThread.-wrap12(ActivityThread.java)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1519)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:154)
    at android.app.ActivityThread.main(ActivityThread.java:6268)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:916)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:806)
    Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'long java.io.InputStream.skip(long)' on a null object reference
    at java.io.FilterInputStream.skip(FilterInputStream.java:151)
    at com.unionpay.mobile.android.resource.c.a(Unknown Source)
    at com.unionpay.mobile.android.widgets.m.<init>(Unknown Source)
    at com.unionpay.mobile.android.widgets.m.<init>(Unknown Source)
    at com.unionpay.mobile.android.plugin.BaseActivity.onCreate(Unknown Source)
    at com.unionpay.uppay.PayActivity.onCreate(Unknown Source)
    at android.app.Activity.performCreate(Activity.java:6720)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2678)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2786)?
    at android.app.ActivityThread.-wrap12(ActivityThread.java)?
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1519)?
    at android.os.Handler.dispatchMessage(Handler.java:102)?
    at android.os.Looper.loop(Looper.java:154)?
    at android.app.ActivityThread.main(ActivityThread.java:6268)?
    at java.lang.reflect.Method.invoke(Native Method)?
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:916)?
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:806)?


    --------- beginning of crash
    09-22 15:14:06.805 23432-23432/com.channelsoft.nncc E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.channelsoft.nncc, PID: 23432
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.channelsoft.nncc/com.unionpay.uppay.PayActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'long java.io.InputStream.skip(long)' on a null object reference
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2725)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2786)
    at android.app.ActivityThread.-wrap12(ActivityThread.java)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1519)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:154)
    at android.app.ActivityThread.main(ActivityThread.java:6268)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:916)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:806)
    Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'long java.io.InputStream.skip(long)' on a null object reference
    at java.io.FilterInputStream.skip(FilterInputStream.java:151)
    at com.unionpay.mobile.android.resource.c.a(Unknown Source)
    at com.unionpay.mobile.android.widgets.m.<init>(Unknown Source)
    at com.unionpay.mobile.android.widgets.m.<init>(Unknown Source)
    at com.unionpay.mobile.android.plugin.BaseActivity.onCreate(Unknown Source)
    at com.unionpay.uppay.PayActivity.onCreate(Unknown Source)
    at android.app.Activity.performCreate(Activity.java:6720)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2678)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2786)?
    at android.app.ActivityThread.-wrap12(ActivityThread.java)?
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1519)?
    at android.os.Handler.dispatchMessage(Handler.java:102)?
    at android.os.Looper.loop(Looper.java:154)?
    at android.app.ActivityThread.main(ActivityThread.java:6268)?
    at java.lang.reflect.Method.invoke(Native Method)?
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:916)?
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:806)?

    后来发现是assets里面有一个文件,它那个sdk好像用到了这个文件,加进去就ok了。data.bin

     

    转载于:https://www.cnblogs.com/angelshelter/p/6939702.html

    展开全文
  • 最近真的是被网抑云这个梗刷爆了,到处都是, 生而为人,我很抱歉,哈哈哈, 碰巧最近学习了一波微信公众号的爬取方式,想试一试, 特地在此献丑了。我是沙漏, 不定期更新爬虫教学, 其余时间学java和linux中。 八...

    最近真的是被 网抑云 这个梗刷爆了,到处都是, 生而为人,我很抱歉,哈哈哈, 碰巧最近学习了一波微信公众号的爬取方式,想试一试, 特地在此献丑了。我是沙漏, 不定期更新爬虫教学, 其余时间学java和linux中。 八月,继续加油。

    资料参考:

    7月微信爬虫本篇博客,基于她的思想之中, 改编于我自己,我自己动手敲了一下, 发现还是存在很大的不同, 也是存在一点问题的, 所以这篇博客,我用我自己的话讲一下这次爬虫的思路,用简单的话说明白。

    工具:

    • 抓包工具 Fiddle 官网下载,有点慢
    • 第三方包:
    import requests
    import json
    from urllib.parse import urlencode
    import pdfkit
    # wkhtmltopdf  github : https://github.com/JazzCore/python-pdfkit/wiki/Installing-wkhtmltopdf
    import os
    import warnings  # 关闭警告

    关于pdfkit 这是一个三方库, 它可以将html转换为pdf 或者 image 图像, 他需要一个软件的支持, 就是wkhtmltopdf wkhtmltopdf官网 说一下, 官网我下了半小时都没动一下, 不知道是不是我个人原因, 推荐还是去第三方网站随便下一个,绝对比这个快!


    下载之后, 在 bin 目录下 可以看到 wkhtmltopdf.exe 这个工具,先记下路径,后面需要用到。

    打开fiddle,开始抓包

    • 关于fiddle的基础配置, 在下载的时候,都会提到, 这里就不提了。
      打开fiddle 随意打开一个微信公众号。往下拖动微信下拉条,让他加载更多文章,就像这样。

    微信公众号的包很好分别的,主要他是一个json包, 而且通过网址我们也可以很好的认出来, 这张截图上注意的点我都标出来了。

    其实这也可以理解成一个ajax请求吧, 我们只要构造一个字典参数加入,就可以构造成一个请求网址,这样就可以实现多页爬取了。原理我觉得差不多, 主要还是 构造参数 params 的甄别了,这个很重要, 有些参数没构造成功就不能正确的访问进去。关于ajax的我也写了一篇博客, 可以进去看看 = =女生勿扰,只适合男孩子的python爬虫,里面东西不给钱统统白送。博主其他文章

    那下面我们就开始编写爬虫吧!


    构造基本参数:

    一般我们所讲的基本参数 也就是浏览器的请求头, 还有一些请求参数, cookies之类的, 这里额外加一个 请求参数params , 看代码:图方便, 这里也可以先构造一个文件 to_pdfto_pdf.py

    # -*- coding :  utf-8 -*-
    # @Time      :  2020/8/6  18:31
    # @author    :  沙漏在下雨
    # @Software  :  PyCharm
    # @CSDN      :  https://me.csdn.net/qq_45906219
    ## to_pdf.py
    
    # 目标公众号标识
    biz = 'MzA4NDQwMTczOA=='
    # 微信登录后的一些标识参数
    pass_ticket = 'DdDXKrOnQztW4p81Nm3nRQQ/EAFMCDz5MZO5KeBYdedjaZPH4nLFHL2LWE1uxHVJ'
    appmsg_token = '1073_tnlzQTEqvlr9EgXQdC6zALGHfcJw4By9Bx69bQ~~'
    uin = 'Mzc2MDg4MzgxNA=='
    key = '360754e56e033319af5321321189d5b230b2bfe570313f76e4ed2ef0cd8a1fcfd087786d9da1d826ed30da55f477215359ba761e2a2af5f92213b05c17d89153631a537e35fc91f6d7fb3009e7113958'
    # 安装的wkhtmltopdf.exe文件路径  这个是保存为pdf的 其实他还有保存为文件
    wkhtmltopdf_path = r'D:\wkhtmltox\wkhtmltopdf\bin\wkhtmltopdf.exe'
    

     

    上面提到一些 biz , passticket 之类参数的,我们可以在这里看到。

        def __init__(self):
            """spider the wxChat station"""
            self.session = requests.session()
            self.offset = 0  # 偏移量 
            self.json_name = 'wxChat.json'  # 保存json文件名
            self.down_path = 'D:/wxChatPDF/'  # 下载地址
            self.__initGetBaseData()
        def __initGetBaseData(self):
            """
            input some BaseParams about the requests session
            """
            self.headers = {
                'Accept-Language': 'zh-CN,zh;q=0.8,en-US;q=0.6,en;q=0.5;q=0.4',
                "User-Agent": 这个太长了,在fiddle上面直接复制就可以
                'X-Requested-With': 'XMLHttpRequest'
            }
            self.cookies = {
                'wxtokenkey': '777',
                "wxuin": "3760883814",
                "devicetype": "android - 29",
                "version": "27000",
                "lang": "zh_CN",
                "pass_ticket": to_pdf.pass_ticket,
                "wap_sid2": "COaQqoEOElxramROblROTTRtTktEa29yU3drdExUODg4RjZCaVVsX3lycHV0VUJ"
                            "3aWtmMl9xNDlJVFN0YTZJY0NxdzZsTXdfaHJxMmZyTTRUZGlGdTZHNVEtNzh5REVFQUFBfjDDsK / 5BTgNQJVO"
    
            }
            self.profile_url = "https://mp.weixin.qq.com/mp/profile_ext?"
            self.session.headers.update(self.headers)  # 更新headers
            self.session.cookies.update(self.cookies)  # 更新cookies
            self.params = {
                'action': 'getmsg',
                '__biz': to_pdf.biz,
                'f': 'json',
                'offset': '10',  # 若需要多页爬取, 构造 : str(self.offset)
                'count': '10',
                'is_ok': '1',
                'scene': '124',
                'uin': to_pdf.uin,
                'key': to_pdf.key,  # 这个好像二十分钟就会失效, 需要隔段时间更换
                'pass_ticket': to_pdf.pass_ticket,
                'wxtoken': '',
                'appmsg_token': to_pdf.appmsg_token,
                'x5': '0',
    
            }

    这里讲一下 self.profile_url 这个参数, 我们在fiddle上面获得的网址是很长的一段, 其实只要卡到 ? 这里就可以了, 可以试试的。

    请求网址, 通过json包,分割出标题和网址:

    上面我们构造了一些参数,然后就可以正常的请求网址了,如下:

     def run(self):
            """提取出标题和网址,
            保存到json包 然后下载转换为Pdf"""
            items = {}
            for jsons in self.get_json():
                json_list = jsons.get('general_msg_list')
                json_list = json.loads(json_list)  # 转换为json 类型
                json_list1 = json_list.get('list')
                for json_one in json_list1:
                    # 遍历这个列表字典  先解析最外层标题和网址
                    json_list_info = json_one.get('app_msg_ext_info')
                    title = json_list_info.get('title')
                    content_url = json_list_info.get('content_url')
                    items[title] = content_url  # 装入字典
                    json_list_info1 = json_list_info.get('multi_app_msg_item_list')
                    for json_two in json_list_info1:  # 解析第二层标题和网址
                        title2 = json_two.get('title')
                        content_url2 = json_two.get('content_url')
                        items[title2] = content_url2
            # 转换字典类型
            items_json = json.dump(items, ensure_ascii=False, indent=4,
                                   fp=self.json_name)  # ensure_ascii=False(输出中文), indent=4(缩进为4)
            # 先写入文件,避免占用太多内存消耗
            with open(self.json_name, 'a+', encoding='utf-8') as fw:
                fw.write(items_json)
                print('dump the wxChat.json is successful!')
            # 下载ok之后, 就开始下载
            self.down()
    
        def get_json(self):
            """得到所有文章的链接
            构造一个office偏移量 不断的请求构造网址 分析Json包
            """
            print('【ps】 spider the wxChart is starting!')
            for i in range(1, 2):
                print(f'The SpiderDemo is spider doing {i} pages')
                # self.offset += 10 * i  # 开启这个 表示 多页爬取
                # 对比了很多次 构造网址 和 原网址 还是有很多的区别 在这里改一改才能正确的成功
                self.profile_url += (urlencode(self.params) + '&f=json HTTP/1.1')
                self.profile_url = self.profile_url.replace('%3D%3D&f=json', '==&f=json', 1)
                r = self.session.get(self.profile_url, verify=False)
                yield r.json()

    这里发现了一个很大的问题, 不管是在 get() 里面构造字典, 还是先构造字典,都发现我不能正确的获取到数据, 最后打印了一下构造网址, 发现存在很大问题。

    我构造的https://mp.weixin.qq.com/mp/profile_ext?action=getmsg&__biz=MzA4NDQwMTczOA%3D%3D&f=json&offset=10&count=10&is_ok=1&scene=124&uin=Mzc2MDg4MzgxNA%3D%3D&key=9a979acccbefb6032e6ea1a3ed3fbe82a67e7244eb884c9b4fd497550577b4c57f82cb7c0998ef8dc91cf1dca069ca16fe8cce902f238a72294726745094a68c5efb99f91df5e2592c7540ec90d5b09b&pass_ticket=DdDXKrOnQztW4p81Nm3nRQQ%2FEAFMCDz5MZO5KeBYdedjaZPH4nLFHL2LWE1uxHVJ&wxtoken=&appmsg_token=1073_tnlzQTEqvlr9EgXQdC6zALGHfcJw4By9Bx69bQ~~&x5=0&f=json

    从fiddle上面复制的https://mp.weixin.qq.com/mp/profile_ext?action=getmsg&__biz=MzA4NDQwMTczOA==&f=json&offset=10&count=10&is_ok=1&scene=124&uin=Mzc2MDg4MzgxNA%3D%3D&key=9a979acccbefb6032e6ea1a3ed3fbe82a67e7244eb884c9b4fd497550577b4c57f82cb7c0998ef8dc91cf1dca069ca16fe8cce902f238a72294726745094a68c5efb99f91df5e2592c7540ec90d5b09b&pass_ticket=D2Ir2BvSw4lli9ZReGdqnsFacl0N6Lnpmj9h4EE4CBdqV7cd7co7eRRnOBO4EsG%2F&wxtoken=&appmsg_token=1073_o%252FrQqQ5kpRJZNWMKabr8tLelugCSKx8mIN5IGQ~~&x5=0&f=json HTTP/1.1

    对比了一下,发现我自己的url 第一个 == 变成了 %3D%3D , 后缀也少了很多。然后进行了修改, 最后成功进入了。如下:

    self.profile_url += (urlencode(self.params) + '&f=json HTTP/1.1')
    self.profile_url = self.profile_url.replace('%3D%3D&f=json', '==&f=json', 1)
    12

    上面的代码包括很多json的拆分, 这个我推荐一个网址, 很好用。

    可以在线解析 json 包, 在线解析json

    读入本地文件,下载html,转换pdf

    上面我们代码中讲到, 为了减少内存的占用, 我把文件先保存到本地了,那么现在就可以直接读取本地文件,代码如下:

     def pathisok(self, path):
            """判断目录是否存在, 不存在就创建 进入文件"""
            if not os.path.exists(self.down_path):
                os.mkdir(self.down_path)
    
        def down(self):
            """
            打开json包,根据标题,网址开始下载,
            爬取之后保存的格式可以很多种,这里我使用一下之前学到的一个新工具 to_pdf
            将网页转换为html页面
            """
            self.pathisok(self.down_path)
            with open(self.json_name, 'r', encoding='utf-8') as fr:
                for index in fr:
                    if ':' in index:  # 判断是否是不是标题和网址
                        title = index.strip().split(':')[0]
                        url = ''.join(index.strip().split(':')[1:]).strip(',')
                        # 对网址进一步处理
                        url = url.replace('http', 'https:')
                        # 如果不修改文件名称 一定会报错 OsError的错误 找了很久
                        title = title.replace('\\', '').replace('/', '').replace(':', '').replace(':', '') \
                            .replace('*', '').replace('?', '').replace('?', '').replace('“', '') \
                            .replace('"', '').replace('<', '').replace('>', '').replace('|', '_')
                        print('- ' * 40)
                        print(f'The title is {title} starting spider')
                        print('- ' * 40)
                        # print(os.path.join(self.down_path, title + '.pdf'))
                        pdfkit.from_url(url, os.path.join(self.down_path, title + '.pdf'),
                                        configuration=pdfkit.configuration(wkhtmltopdf=to_pdf.wkhtmltopdf_path))
                        # pdfkit.from_url(value, os.path.join(self.savedir, key + '.pdf'),
                        #                 configuration=pdfkit.configuration(wkhtmltopdf=self.cfg.wkhtmltopdf_path))
                        print('- ' * 40)
                        print(f'The title is {title} spider is successful')
                        print('- ' * 40)
                    else:
                        pass

    这里要注意一点的, 关于文件的名称,有的时候爬虫我们给文件起名称不会在意很多细节, 如果文件名中有特殊符号, 或者其他不允许的符号,那么创建文件或者目录就会报错, 大致就是IOError 之类的错误了。 所以我们需要对 Title 进行再一次的修改, 确保不会出现问题。

    打开pdf, 深夜了,打开 ‘网抑云’ 。

    好了, 这就是本次爬虫的全部过程了, 说实话, 看其他的文章也会让自己学到很多, 在此多谢 北海以北的等待, 没有关注我的,可以点个关注哟。

    全部代码:

    # -*- coding :  utf-8 -*-
    # @Time      :  2020/8/6  17:00
    # @author    :  沙漏在下雨
    # @Software  :  PyCharm
    # @CSDN      :  https://me.csdn.net/qq_45906219
    import requests
    import json
    from urllib.parse import urlencode
    import pdfkit
    # wkhtmltopdf  github : https://github.com/JazzCore/python-pdfkit/wiki/Installing-wkhtmltopdf
    import os
    import warnings
    
    warnings.filterwarnings('ignore')
    
    
    class wxChatSpider(object):
        def __init__(self):
            """spider the wxChat station"""
            self.session = requests.session()
            self.offset = 0
            self.json_name = 'wxChat.json'
            self.down_path = 'D:/wxChatPDF/'  # 下载地址
            self.__initGetBaseData()
    
        def run(self):
            """提取出标题和网址,
            保存到json包 然后下载转换为Pdf"""
            items = {}
            for jsons in self.get_json():
                json_list = jsons.get('general_msg_list')
                json_list = json.loads(json_list)  # 转换为json 类型
                json_list1 = json_list.get('list')
                for json_one in json_list1:
                    # 遍历这个列表字典  先解析最外层标题和网址
                    json_list_info = json_one.get('app_msg_ext_info')
                    title = json_list_info.get('title')
                    content_url = json_list_info.get('content_url')
                    items[title] = content_url  # 装入字典
                    json_list_info1 = json_list_info.get('multi_app_msg_item_list')
                    for json_two in json_list_info1:  # 解析第二层标题和网址
                        title2 = json_two.get('title')
                        content_url2 = json_two.get('content_url')
                        items[title2] = content_url2
            # 转换字典类型
            items_json = json.dump(items, ensure_ascii=False, indent=4,
                                   fp=self.json_name)  # ensure_ascii=False(输出中文), indent=4(缩进为4)
            # 先写入文件,避免占用太多内存消耗
            with open(self.json_name, 'a+', encoding='utf-8') as fw:
                fw.write(items_json)
                print('dump the wxChat.json is successful!')
            # 下载ok之后, 就开始下载
            self.down()
    
        def get_json(self):
            """得到所有文章的链接
            构造一个office偏移量 不断的请求构造网址 分析Json包
            """
            print('【ps】 spider the wxChart is starting!')
            for i in range(1, 2):
                print(f'The SpiderDemo is spider doing {i} pages')
                # self.offset += 10 * i  # 开启这个 表示 多页爬取
                # 对比了很多次 构造网址 和 原网址 还是有很多的区别 在这里改一改才能正确的成功
                self.profile_url += (urlencode(self.params) + '&f=json HTTP/1.1')
                self.profile_url = self.profile_url.replace('%3D%3D&f=json', '==&f=json', 1)
                r = self.session.get(self.profile_url, verify=False)
                yield r.json()
    
        def pathisok(self, path):
            """判断目录是否存在, 不存在就创建 进入文件"""
            if not os.path.exists(self.down_path):
                os.mkdir(self.down_path)
    
        def down(self):
            """
            打开json包,根据标题,网址开始下载,
            爬取之后保存的格式可以很多种,这里我使用一下之前学到的一个新工具 to_pdf
            将网页转换为html页面
            """
            self.pathisok(self.down_path)
            with open(self.json_name, 'r', encoding='utf-8') as fr:
                for index in fr:
                    if ':' in index:  # 判断是否是不是标题和网址
                        title = index.strip().split(':')[0]
                        url = ''.join(index.strip().split(':')[1:]).strip(',')
                        # 对网址进一步处理
                        url = url.replace('http', 'https:')
                        # 如果不修改文件名称 一定会报错 OsError的错误 找了很久
                        title = title.replace('\\', '').replace('/', '').replace(':', '').replace(':', '') \
                            .replace('*', '').replace('?', '').replace('?', '').replace('“', '') \
                            .replace('"', '').replace('<', '').replace('>', '').replace('|', '_')
                        print('- ' * 40)
                        print(f'The title is {title} starting spider')
                        print('- ' * 40)
                        # print(os.path.join(self.down_path, title + '.pdf'))
                        pdfkit.from_url(url, os.path.join(self.down_path, title + '.pdf'),
                                        configuration=pdfkit.configuration(wkhtmltopdf=to_pdf.wkhtmltopdf_path))
                        # pdfkit.from_url(value, os.path.join(self.savedir, key + '.pdf'),
                        #                 configuration=pdfkit.configuration(wkhtmltopdf=self.cfg.wkhtmltopdf_path))
                        print('- ' * 40)
                        print(f'The title is {title} spider is successful')
                        print('- ' * 40)
                    else:
                        pass
    
        def __initGetBaseData(self):
            """
            input some BaseParams about the requests session
            """
            self.headers = {
                'Accept-Language': 'zh-CN,zh;q=0.8,en-US;q=0.6,en;q=0.5;q=0.4',
                "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36"
                              " (KHTML, like Gecko) Chrome/53.0.2785.116 Safari/537.36 QBCore/4.0.1301.400 "
                              "QQBrowser/9.0.2524.400 Mozilla/5.0 (Windows NT 6.1; WOW64)"
                              " AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2875.116"
                              " Safari/537.36 NetType/WIFI MicroMessenger/7.0.5 WindowsWechat",
                'X-Requested-With': 'XMLHttpRequest'
            }
            self.cookies = {
                'wxtokenkey': '777',
                "wxuin": "3760883814",
                "devicetype": "android - 29",
                "version": "27000",
                "lang": "zh_CN",
                "pass_ticket": to_pdf.pass_ticket,
                "wap_sid2": "COaQqoEOElxramROblROTTRtTktEa29yU3drdExUODg4RjZCaVVsX3lycHV0VUJ"
                            "3aWtmMl9xNDlJVFN0YTZJY0NxdzZsTXdfaHJxMmZyTTRUZGlGdTZHNVEtNzh5REVFQUFBfjDDsK / 5BTgNQJVO"
    
            }
            self.profile_url = "https://mp.weixin.qq.com/mp/profile_ext?"
            self.session.headers.update(self.headers)  # 更新headers
            self.session.cookies.update(self.cookies)  # 更新cookies
            self.saveDir = 'D:/wxChatSpider'
            self.params = {
                'action': 'getmsg',
                '__biz': to_pdf.biz,
                'f': 'json',
                'offset': '10',  # 若需要多页爬取, 构造 : str(self.offset)
                'count': '10',
                'is_ok': '1',
                'scene': '124',
                'uin': to_pdf.uin,
                'key': to_pdf.key,  # 这个好像二十分钟就会失效, 需要隔段时间更换
                'pass_ticket': to_pdf.pass_ticket,
                'wxtoken': '',
                'appmsg_token': to_pdf.appmsg_token,
                'x5': '0',
    
            }
    
    
    if __name__ == '__main__':
        import to_pdf
    
        # 里面是第三方库的配置, 以及一些微信公众号的参数
        spider = wxChatSpider()
        spider.run()
    

     

    源码获取加群:1136192749

     

     

    展开全文
  • 最近真的是被网抑云这个梗刷爆了,到处都是, 生而为人,我很抱歉,哈哈哈, 碰巧最近学习了一波微信公众号的爬取方式,想试一试, 特地在此献丑了。我是小何, 不定期更新爬虫教学, 其余时间学软件测试和linux中。...
  • 今天在使用mac shell 登陆阿里,总是自动断开,想使用xshell 类shell 管理工具来保持会话,找了找说是finalshell 国产良心之作,安装了一下使用后还是比较好用的一sehll ,但是,马上阿里就发来了短信和邮件...
  • 程序员老

    千次阅读 2016-03-30 22:59:44
    ——就是把妹。 3  程序员如何制造就业机会 一老板坐飞机,旁边一刚毕业程序员拿着杂志看,一边看一边念叨:云计算要火?老板听了,回去问VP:什么是云计算?VP回去告诉总监:我们可能要做云计算;总监回去...
  • 一幕距离六月基础设施算力升级,搭载第三代神龙服务器架构的高主频七代发布仅仅过了一多月。 阿里弹性计算负责人旭卿说,如此之快还要归功于第三代神龙架构带来的利好尝试。 确实,通过三代神龙架构的强势...
  • 全栈私有,并不只是说说而已

    千次阅读 2018-08-14 11:20:56
    ”华为EBG中国区IT解决方案销售部部长张英在华为全栈私有解决方案发布会说道。 也不知道从什么时候开始,云计算市场刮起了一阵”全栈“风,不少云计算厂商都争相推出”全栈”式的解决方案,搞...
  • “生而为人,我很抱歉”近期,在许多地方都出现了“网抑这个梗,每日到点抑郁。甚至出现了人传人现象,患者病发症状十分准时,只会在深夜12点集体发作。每当夜晚12点,“网易”就变成了“...
  • ERP真的靠谱吗?

    2018-12-18 13:26:17
    现在几乎每IT系统或项目都要跟挂上钩,跟数码产品必与“智能”扯上关系一样,否则在外行甚至同行眼里就是“矮小搓”。ERP领域也悄然刮起了云端化。国内ERP产品也借此机会想弯道超车,通过化来抢夺被SAP和...
  • 程序员才知道的

    2020-02-22 09:53:45
    整理的一些程序员的,供各位码农休闲时放松娱乐 1.上联:MYSQL明月三千里 下联:XHTML.信号他妈烂! 2.“老板,有《边城》吗?” “不好意思,我们不卖计算机类的书。” 3.如果软件正在占领全世界,为什么程序员...
  • 只改了一行代码啊,怎么会这样 ​ ​给客户演示,我的bug没被发现 ​ 测试bug中 ...​​公司里来了一程序员鼓励师 ​ ​有人曾经问过,"HTML CSS和Java有什么区别" ​ ​​我是程序员,我不关心...
  • android studio的gradle

    2017-07-24 16:55:51
    更新gradle太慢,来阿里 buildscript{  repositories {  maven{ url 'http://maven.aliyun.com/nexus/content/groups/public/'}  jcenter()  }  dependencies {  classpath 'com
  • 华为私有解决方案的年终答卷

    千次阅读 2018-01-11 14:12:55
    2018年悄然而至,正好是华为成立30周年,通过三十年的风风雨雨,华为从一一穷二白的民族企业成长为了令世界瞩目的国际大公司,就在不久前,华为轮值CEO胡厚崑在新年献词中表示,2017年华为全年销售收入预计约6000...
  • 程序员才懂的

    千次阅读 2019-03-27 20:52:16
    只改了一行代码啊,怎么会这样 给客户演示,我的bug没被发现 测试bug中 正在调试,突然内存溢出 当你调整css样式的时候 ...公司里来了一程序员鼓励师 有人曾经问过,"HTML CSS...
  • 我想如果Bespin Global也有朋友圈的话,很有可能是这个样子滴!作为亚洲地区唯一入选Gartner首版公有MSP魔力象限的企业,Bespin Global一段时间里得到了广泛关注,一度被Gartner评为“积极进取”的亚洲管理服务...
  • 技术史中有一有意思的现象,科技树往往会进行分支延展。甚至有时候原本期待的技术目标还没实现,却在技术分支打开了一连串实用脑洞。 最著名的案例,大概就是在大型计算机的主干道上,分叉出了PC和整个数字...
  • 程序员才懂的~

    2019-04-12 15:35:00
    我的bug没被发现​测试bug中​正在调试,突然内存溢出​​​当你调整css样式的时候​​​当程序员听客户说还在用IE时​​​当你改错一行代码的时候​​“精神领袖”​​​公司里来了一程序员鼓励师​​有人曾经问...
  • 近两年国内云计算市场的竞争越来越激烈,越来越多的新型公司也开始加入到云计算这个队伍中,与像阿里、腾讯、百度、华为等大企业争夺市场,从中分一杯。 为此,很多企业抢先一步推出长达6月甚至一年...
  • 亭亭的白紫薇的柔上,洁白的花瓣沾染着些许夜中的露珠,点点晶莹莹可爱的露珠。我痴望着,可是昨夜的西风悄然遗忘的玉簪。八时许,似从远古珊珊走来的阳光,缓缓地触摸着衣物,久雨放晴的天空开始变得蔚蓝而...
  • 这个是非常好用方便且便宜的物联网开发板,自带 USB 转串口芯片、WiFi 及多 GPIO 接口,可连接多传感器。硬件基于 ESP8266 构建,内置 WiFi 支持。 - 传感器 我对精度要求不是很高,所以选择一款廉价的温湿度...
  • 前言:最近阿里搞活动,好多人买了服务器却不知道怎样入手(牙膏小前端),最简单的配置过程,不喜勿喷。 一. 前期准备 简单的linxu基础,创建用户,编辑保存打开文件总要会吧。 阿里服务器centos7 64位(最低...
  • 小程序开发采坑记

    2019-07-11 18:56:46
    再声明一点,如你想要一良好的后台管理系统,请绕道,开发是没有办法搭建管理系统的,所以深度的认证处理,或者需要人工处理后台数据的话请绕行。 (现在已经可以了,前段时间更新了api,新增了一些api...
  • 次日凌晨,阿里官方微博针对阿里服务器大规模故障问题作出回应,声明中表示,由于程序员在运维上的一操作失误,导致一些客户访问阿里官网控制台和使用部分产品功能出现问题。@恬恬piracy:程序员的年终奖堪...
  • 2020年流行语和 Oline class 网课 New Generation 后浪 Working in the cloud /Cloud working 办公 Cloud Computing 云计算 My youth is making a comeback 爷青回 laborer 打工人 Office worker 办公室职员 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,265
精华内容 906
关键字:

云这个梗