这个藏文字体符号怎么输入。操作步骤能给我看一下吗。因为游戏不能复制粘贴。谢谢你

&p&愤怒的答主在此。&/p&&p&我话放着,本文除了“逆袭少年”及“思想聚焦”两位微博博主之外,从未也并不打算继续授权给任何人,如若未经允许,私自抄袭,则默认为同意支付千字千元的稿酬。&/p&&p&如果不给,那。&/p&&p&说实话,那我也没啥办法,心累,就酱~~~&/p&&p&-------------原文分割线---------------------&/p&&p&1、糖,是万能的,别怕,不管任何,是任何菜式,出锅前放一丢丢,总会遇到你想要的味道;(糖,不是为了让菜变得甜腻,而是作为味引,激发出足以挑拨你味蕾的口感)&/p&&p&2、豆瓣酱在肉类处理上,是不会犯错的存在,最简单的,放油,放豆瓣酱和肉沫,加一点点料酒去腥,就可以得到满满一碗辣肉面的肉酱,放在冰箱里吧,什么时候饿了,下碗面条浇一点这个肉酱上去,端在面前,是一碗面条吗?不,是一碗准备时间只需要5分钟的幸福。&/p&&p&3、蚝油在好多素菜的处理上,几乎可以替代盐,而且有着盐没有的那股“鲜”味,举个例子:干锅花菜。洗干净沥干,然后下油,放一点点花椒或者辣椒,吧花菜放进去,一滴水也不要加,感觉差不多了,放耗油+生抽,别放盐,出锅,有追求的就再放些五花肉片进去,尝尝,是不是觉得外面的干锅简直是垃圾?&/p&&p&4、初学者,不要想着一气呵成,很多东西是可以在烹饪过程中不断调整的,容错性巨高,特别是烹饪时间较长的菜式,例如蒸菜。打个比方:梅干菜扣肉,听说四川人民管这个叫做烧白?前面不罗嗦,就说上蒸锅开蒸之后,每隔半小时用筷子舔一下,觉得咸了赶紧吧里面的汁水逼出来一点,觉得淡了就加一勺老抽进去,觉得不够甜就放一小粒冰糖在边边,容错性巨高。&/p&&p&5、洋葱用来增香再好不过了。最最最最简单的,炒鸡蛋,加一两片洋葱进去,感觉是两个菜。&/p&&p&6、刀工没有那么重要,现在的厨房懒人工具太多了,不要把时间浪费在练习刀工上,至少我是这么认为的,还容易受伤。&/p&&p&7、外面的菜口感总觉得和家里不一样,是因为外面的火远比家里的要旺,这个是煤气灶的硬伤,解决不了的,但也并不是没有一点办法。我个人的解决方案是,尤其在所谓的“爆炒”菜式中,会将火开至最大,然后将锅倾斜至很夸张的角度,目的是让火舌舔到锅里的油,这样就会有锅里起火的效果,温度非常之高,然后上盖子压灭,出锅。这招是我自己捣鼓出来的,有的时候实在是少油,火舌舔不到,我就在锅边边刷一点油。&/p&&p&8、汤类中的“鲜”,我指的是的寻常汤类,不外乎来自这四种东西——笋、肉、味精、白胡椒粉(评论提醒,还有一种,但我不经常做,就是菇类)。这也是我经常做的几道,极其方便。比如,上海菜中有一道“腌笃鲜”,冬笋、精肉、咸肉,一比一比一入锅,一大锅,熬着吧,啥也不用放,真的其他啥也不用放(姜片和料酒去腥还是必需的),1个小时后出锅,撒点葱花,冬天里简直是。。。王菲有首歌叫什么来着?天上人间是吧,诶。&/p&&p&再比如,我这边有个卖臭豆腐的,炸完后浸入一种汤里,巨好喝,问他怎么弄的,他摆摆手说是秘方,不外传。回家自己细细一品,转身进厨房,不说一模一样,但可以乱真——牛肉汤,味精、五香粉,酸豆角,白胡椒粉,香菜。就这么简单,还,还秘方不外传,啊我呸。&/p&&p&9、用猪油,比其他任何的大豆油或色拉油炒出来的菜,都要香,我用过一次就上瘾,唯一的缺点就是凝固点太高了(很多人评论纠正我是低?我也搞不明白了,如果普通油凝固需要零下1度,而猪油凝固零上5度,到底是谁高谁低呢?),很容易就变成膏体,冬天是需要用勺子挖的。&/p&&p&10、最后给个心得,其实厨艺这东西没有什么玄妙的,无非是经验而已,我一个人搁那捣鼓五六十年,出来绝对也是一等一的大师,总有个阴差阳错能让我悟到一些原本没人点拨到的TIPS,那为什么不去寻求身边的高手呢?比方,我吃番茄炒蛋,永远是淡而无味,加再多调味品都没办法拯救的哪种,结果我一朋友对我说,你说说你怎么弄的呢?说完,所有的步骤和路数都是OK的,唯一一点,出错了,炒番茄的时候没有用勺子用力压番茄,这样番茄里的酱汁就不会被压出来,也就没有办法裹在蛋上形成独特的口感了。我一听,可不是咋的,就是这个道理。&/p&&p&再比方,哎呀,我比方太多了。比方,那个薯条,我随便怎么都弄不出那种麦当劳的风味,口感一模一样,就是没有那种风味,最后问题出在,土豆切条之后需要用牛奶浸泡一晚上,没有牛奶用奶粉也可以,这样会有若有若无的奶香味道,味蕾再发达的人,别人不说,这种味道你要能领悟原材料估计得靠缘分。&/p&&p&你看,是不是一个很小的点拨?小到你压根不会去注意。&/p&&p&多问多讨教就对了。&/p&&p&11、最后的最后,大家都是一双手,厨艺这东西练练总会上去的,但巧妇难为无米之炊,家里的调料一定要齐全,不然就会变成我,经常戴着口罩围着围裙坐电梯到小区门口超市买缺的调料(那回头率老高了)。郫县豆瓣酱、料酒、老姜、蒜瓣、老抽(酱油)、生抽(鲜酱油)、香醋、白醋、白砂糖、老冰糖、白芝麻、小磨麻油、甜面酱、蚝油、辣椒面、五香粉、八角、桂皮、香叶、咖哩粉、白胡椒粉、鲜辣粉、花椒粉、椒盐、孜然粉、番茄酱、浓汤宝(牛肉、猪肉和老母鸡)、蜂蜜、老干妈豆豉酱。&/p&&p&这些调味品有共同的特征——1、保质期较长,常备着,不容易坏。2、使用频率极其频繁。3、要么不用,一旦那道菜式需要用到,而你恰恰缺少,那这道菜基本就属于做不了了,非要不可的那种。&/p&&p&----------分割线-------------&/p&&p&还挺多人赞的啊,那我多写点,交流啊。&/p&&p&很多时候,在外面吃到好吃的,一定要细细品,用力想,多半是能想出来个大概的,回家就操作一下。&/p&&p&门口炒饭师傅再牛叉,一辈子就会超炒个饭,不算厉害,但是你胸中藏着三百道食谱,到谁家一看,有什么食材和佐料,都能捣鼓出来一桌丰盛得不要不要的晚宴,这才是境界,所以厨艺是建立在食谱量之上的。&/p&&p&我就有这习惯,到哪去,诶,这蟹粉豆腐可以,豆腐滑嫩,色泽艳黄,口感绵醇。容我想一哈,应该不是老豆腐,但也不是内酯豆腐,不然肯定铲子一划要破相,一定是嫩豆腐没跑了。为什么会有鲜美的汤水呢,肯定是蟹肉汤,但蟹肉不是白色的么,这艳黄的色泽是哪里来的呢?哪一味调味品或者食材能出现这种黄呢?有点像黄咖喱,那没有咖喱味啊,看着有点像酸汤肥牛的那个颜色,难道是黄椒酱?嗯,回家试一下。&/p&&p&你看,是不是思考令人进步?&/p&&p&你们错了,因为被这道菜的名字误导了,哪有什么蟹,那黄色根本就是咸蛋黄压碎了之后稀释的。&/p&&p&但没关系,被坑一次,蟹粉豆腐这道菜谱我就了然于胸了,家里冰箱只剩一块豆腐和一个咸蛋的时候,我就能拿出来下锅了啊。不然的话,面对冰箱中仅剩的这两种食材,不就束手无策了吗?总不见得先把咸蛋空口吃了,然后一头撞死在豆腐上吧。&/p&&p&多想想自己在外面喜欢的菜,再动手还原出来,是最磨练厨艺的。&/p&&p&另外,我说心里话,厨艺在当下这个年代,有点。。。我不知道该怎么形容这种定位,不是核心所在,似乎也没有任何不妥。&/p&&p&我希望厨艺,是充当一种生活仪式感或点缀感的东西(类似花道或者茶道),包括我自己其实都不经常下厨房,一周一次吧,并不是我懒。而是年纪上去了,我不得不在这里和大家承认一个事实,厨艺与健康,其实并无关联,恰恰相反,某种程度上,厨艺越高,对健康危害反而越大。&/p&&p&因为在家能做出来的菜,想要好吃,油多、盐多、调料多、糖多——这是再高超的厨师都不可能否定的事实。&/p&&p&我自己平时,就靠破壁机活着了,由于职业关系,对身材和颜值有管理要求(175cm,115到120斤之间徘徊),因此需要大量的极低热量的食材维系,基本就是早上无糖麦片,中午破壁五青汁,晚上蔬菜沙拉或者乱七八糟的蔬菜开水烫熟在和水果一起破壁成泥(那味道人类是不会喜欢的),最多临睡或者夜宵来一碗银耳红枣羹(补充下胶原蛋白)。&/p&&p&PS:我不是小姐姐,我是小哥哥,谢谢大家。&/p&&figure&&img src=&https://pic3.zhimg.com/50/v2-08ae0e63d573fa1cea54ad20fafa8627_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&640& data-rawheight=&854& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&https://pic3.zhimg.com/50/v2-08ae0e63d573fa1cea54ad20fafa8627_r.jpg&&&/figure&&figure&&img src=&https://pic4.zhimg.com/50/v2-8dcab18f015e_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1080& data-rawheight=&1582& class=&origin_image zh-lightbox-thumb& width=&1080& data-original=&https://pic4.zhimg.com/50/v2-8dcab18f015e_r.jpg&&&/figure&&p&不要问我为什么手机壳这么破烂了还不换,因为用出感情了不舍得,就酱。&/p&
愤怒的答主在此。我话放着,本文除了“逆袭少年”及“思想聚焦”两位微博博主之外,从未也并不打算继续授权给任何人,如若未经允许,私自抄袭,则默认为同意支付千字千元的稿酬。如果不给,那。说实话,那我也没啥办法,心累,就酱~~~-------------原文分割…
&figure&&img src=&https://pic1.zhimg.com/v2-ada56b65e150e1602591afc4a47d1873_b.jpg& data-rawwidth=&1920& data-rawheight=&1080& class=&origin_image zh-lightbox-thumb& width=&1920& data-original=&https://pic1.zhimg.com/v2-ada56b65e150e1602591afc4a47d1873_r.jpg&&&/figure&&p&&/p&&a class=&video-box& href=&http://link.zhihu.com/?target=https%3A//www.zhihu.com/video/588480& target=&_blank& data-video-id=&& data-video-playable=&true& data-name=&& data-poster=&https://pic1.zhimg.com/v2-af1abc968dea.jpg& data-lens-id=&588480&&
&img class=&thumbnail& src=&https://pic1.zhimg.com/v2-af1abc968dea.jpg&&&span class=&content&&
&span class=&title&&&span class=&z-ico-extern-gray&&&/span&&span class=&z-ico-extern-blue&&&/span&&/span&
&span class=&url&&&span class=&z-ico-video&&&/span&https://www.zhihu.com/video/588480&/span&
&p&&/p&&p&&/p&&p&在一些新媒体图文或者 PPT 设计中,我们可以看到很多类似这样的文字云效果,也就是由无数的小字组成一个多彩的图形或者图片。&/p&&p&&br&&/p&&p&很多小伙伴以为需要多么专业的软件,其实不然,我们所用到的,仅仅是一款名为 &/p&&p&&a href=&http://link.zhihu.com/?target=https%3A//wordart.com/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&WordArt 的在线工具。&/a&&/p&&p&&br&&/p&&p&&br&&/p&&hr&&p&&br&&/p&&p&&b&注册登录 &&&/b&&/p&&p&&br&&/p&&p&登录 WordArt 在线平台,一般来说,最好注册一个账号,以便随时保存和使用更多功能。点击这里的 Create Now ,即可进入创作界面。这里最最吸引眼球的三行单词就是:Input words,Click Visualize,Customize——也就是放入单词、点击生成视觉图,自定义。&/p&&p&&br&&/p&&p&&br&&/p&&hr&&p&&br&&/p&&p&&b&具体操作 &&&/b&&/p&&p&&br&&/p&&p&在左边的 WORDS 当中,你可以任意输入你想要的单词,其中的尺寸、颜色、角度、字体,一般是默认的。输入一排单词,摁住回车键或者直接用鼠标点击下方留白处,就能输入新的词语或短语。更简单的方式,是在左上角点击 Import,直接粘贴你需要的文本,系统会自动为你分段开来。&/p&&p&&br&&/p&&p&完成后点击右边这里的 Visualize ,稍等片刻就能自动生成一个图形效果。如果你在左边输入的文本大多是汉字,此时生成的将会是乱码。因为 WordArt 的默认字体没有中文。怎么办呢?你就需要自己添加字体。点击左边这里的 FONTS,再点击这里的 Add Fonts 从本地找到你的中文字体上传即可。如果你还不了解如何下载或者在哪儿下载字体,欢迎在我们的微信公众号后台回复&b&【 字体下载 】&/b&获取相关视频和文件。&/p&&p&&br&&/p&&p&字体上传好之后,点击之前的 WORDS,在右边这里选择刚才上载的字体,比如我们上载的是微软雅黑,找到 Microsoft YaHei 即可。此时再点击一次 Visualize,将会生成我们需要的汉字云。点击这里的 Shapes,可以选择我们需要的形状,当然你也可以上传自己的 Logo 或者图案,生成自定义样式。点击这里的 LAYOUT 可以选择图层样式,点击 STYLE 可以自定义颜色、透明度等各种参数。&/p&&p&&br&&/p&&p&所有调整完成之后,点击上方的 SAVE 可以保存样态;点击 DOWMLOAD 并选择合适的格式可以直接下载。&/p&&p&&br&&/p&&p&&br&&/p&&hr&&p&&br&&/p&&p&最后,你可以在 WordArt 官网直接使用这款在线工具,也可以在我们的同名微信公众号后台回复&b&【 wordart 】&/b&获取工具的在线链接,以及我们提供的几款字体。&/p&&p&&br&&/p&&h2&&b&更多干货戳这里:&a href=&http://link.zhihu.com/?target=http%3A//topbook.cc& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&topbook.cc&/a&&/b&&/h2&&p&&b&收藏也要点赞,可不敢白嫖!&/b&&/p&&p&&/p&
在一些新媒体图文或者 PPT 设计中,我们可以看到很多类似这样的文字云效果,也就是由无数的小字组成一个多彩的图形或者图片。 很多小伙伴以为需要多么专业的软件,其实不然,我们所用到的,仅仅是一款名为
注册登录 && 登录 WordArt …
&figure&&img src=&https://pic2.zhimg.com/50/7c1f97c64efcbdcbcd8c9_b.jpg& data-rawwidth=&284& data-rawheight=&202& class=&content_image& width=&284&&&/figure&&figure&&img src=&https://pic3.zhimg.com/50/0e6a63eb372bf96bf053a0dfc092508b_b.jpg& data-rawwidth=&243& data-rawheight=&211& class=&content_image& width=&243&&&/figure&&br&&br&&figure&&img src=&https://pic1.zhimg.com/50/f5e3e379afb4af968f3528_b.jpg& data-rawwidth=&291& data-rawheight=&141& class=&content_image& width=&291&&&/figure&&br&&br&&br&&figure&&img src=&https://pic4.zhimg.com/50/1b259f68c105b3e0e0c8_b.jpg& data-rawwidth=&252& data-rawheight=&197& class=&content_image& width=&252&&&/figure&&br&&br&&figure&&img src=&https://pic4.zhimg.com/50/f7c231dce720c41ff9039a_b.jpg& data-rawwidth=&289& data-rawheight=&189& class=&content_image& width=&289&&&/figure&&br&&br&&figure&&img src=&https://pic3.zhimg.com/50/afae863adcd43a76fa3d046_b.jpg& data-rawwidth=&300& data-rawheight=&214& class=&content_image& width=&300&&&/figure&&br&&br&对《还珠格格》进行词频统计&br&&figure&&img src=&https://pic1.zhimg.com/50/361f3eb99cb8ae8eac27a1df_b.jpg& data-rawwidth=&159& data-rawheight=&243& class=&content_image& width=&159&&&/figure&&br&&figure&&img src=&https://pic3.zhimg.com/50/7dcbcb91d8_b.jpg& data-rawwidth=&285& data-rawheight=&198& class=&content_image& width=&285&&&/figure&&br&&br&&figure&&img src=&https://pic4.zhimg.com/50/6df9a1a8daa2aa0cacaa2b68_b.jpg& data-rawwidth=&280& data-rawheight=&237& class=&content_image& width=&280&&&/figure&&br&&br&对《还珠格格》的词频统计生成词云标签&br&&figure&&img src=&https://pic2.zhimg.com/50/0e26ec89dcff3cc7da7d310ca4f41c59_b.jpg& data-rawwidth=&495& data-rawheight=&216& class=&origin_image zh-lightbox-thumb& width=&495& data-original=&https://pic2.zhimg.com/50/0e26ec89dcff3cc7da7d310ca4f41c59_r.jpg&&&/figure&&br&将《2016年中国政府工作报告》变成词云是这样的&br&&figure&&img src=&https://pic3.zhimg.com/50/c472c60a2aebea77bb5d9_b.jpg& data-rawwidth=&491& data-rawheight=&215& class=&origin_image zh-lightbox-thumb& width=&491& data-original=&https://pic3.zhimg.com/50/c472c60a2aebea77bb5d9_r.jpg&&&/figure&&br&然后是《小时代》&br&&figure&&img src=&https://pic4.zhimg.com/50/b13045baad0eef44810d09_b.jpg& data-rawwidth=&495& data-rawheight=&214& class=&origin_image zh-lightbox-thumb& width=&495& data-original=&https://pic4.zhimg.com/50/b13045baad0eef44810d09_r.jpg&&&/figure&&br&&figure&&img src=&https://pic1.zhimg.com/50/9bdfab754a82_b.jpg& data-rawwidth=&222& data-rawheight=&153& class=&content_image& width=&222&&&/figure&&br&&br&&figure&&img src=&https://pic3.zhimg.com/50/e4d1b0d3091aaff6f925f4ca_b.jpg& data-rawwidth=&309& data-rawheight=&205& class=&content_image& width=&309&&&/figure&&br&&br&&br&以小燕子照片为词云背景&br&&figure&&img src=&https://pic2.zhimg.com/50/2f4deee30fee5ae619f57_b.jpg& data-rawwidth=&450& data-rawheight=&632& class=&origin_image zh-lightbox-thumb& width=&450& data-original=&https://pic2.zhimg.com/50/2f4deee30fee5ae619f57_r.jpg&&&/figure&&br&&br&对《射雕英雄传》进行词频统计并以郭靖剧照作为词云背景&br&&figure&&img src=&https://pic1.zhimg.com/50/a11cf3a14f15027ade1e9f5a729d4bda_b.jpg& data-rawwidth=&600& data-rawheight=&840& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&https://pic1.zhimg.com/50/a11cf3a14f15027ade1e9f5a729d4bda_r.jpg&&&/figure&有没有满满的即视感?&br&&br&&figure&&img src=&https://pic1.zhimg.com/50/c93be023046acaf6cbdd38_b.jpg& data-rawwidth=&297& data-rawheight=&114& class=&content_image& width=&297&&&/figure&&br&&br&&br&&figure&&img src=&https://pic3.zhimg.com/50/bd7f70efcefa7a40a88fa_b.jpg& data-rawwidth=&235& data-rawheight=&228& class=&content_image& width=&235&&&/figure&&br&&br&&figure&&img src=&https://pic2.zhimg.com/50/6f85f00f4de906c859be8d_b.jpg& data-rawwidth=&281& data-rawheight=&171& class=&content_image& width=&281&&&/figure&&br&&figure&&img src=&https://pic2.zhimg.com/50/dad589eab88_b.jpg& data-rawwidth=&254& data-rawheight=&257& class=&content_image& width=&254&&&/figure&&br&一个Web端的电影数据库交互&br&&figure&&img src=&https://pic4.zhimg.com/50/f876387bfa7f745e73e515_b.jpg& data-rawwidth=&1393& data-rawheight=&891& class=&origin_image zh-lightbox-thumb& width=&1393& data-original=&https://pic4.zhimg.com/50/f876387bfa7f745e73e515_r.jpg&&&/figure&&br&&figure&&img src=&https://pic1.zhimg.com/50/721bae08d6ebeef75eb7c3e7ad5f411a_b.jpg& data-rawwidth=&294& data-rawheight=&229& class=&content_image& width=&294&&&/figure&&br&&figure&&img src=&https://pic4.zhimg.com/50/af6d0b80d1d6aa8af28766_b.jpg& data-rawwidth=&1657& data-rawheight=&813& class=&origin_image zh-lightbox-thumb& width=&1657& data-original=&https://pic4.zhimg.com/50/af6d0b80d1d6aa8af28766_r.jpg&&&/figure&&br&可以了解整个香港电影史,从早期合拍上海片,到胡金栓的武侠片,到李小龙时代,然后是成龙,接着周星驰&br&&br&&figure&&img src=&https://pic2.zhimg.com/50/4b48ba21b76a23dc18fcf4a95a1518aa_b.jpg& data-rawwidth=&257& data-rawheight=&214& class=&content_image& width=&257&&&/figure&&figure&&img src=&https://pic4.zhimg.com/50/25e13c6e8fbcaacd26d86d93_b.jpg& data-rawwidth=&801& data-rawheight=&418& class=&origin_image zh-lightbox-thumb& width=&801& data-original=&https://pic4.zhimg.com/50/25e13c6e8fbcaacd26d86d93_r.jpg&&&/figure&&br&对职责要求的词频分析,提炼出必需技能&br&&figure&&img src=&https://pic2.zhimg.com/50/78a0ece1a63d48ede9ffe_b.jpg& data-rawwidth=&400& data-rawheight=&600& class=&content_image& width=&400&&&/figure&&figure&&img src=&https://pic1.zhimg.com/50/abd2c3a2a37ac10_b.jpg& data-rawwidth=&278& data-rawheight=&215& class=&content_image& width=&278&&&/figure&&br&&br&用爬虫爬下上万知乎女神照片&br&&figure&&img src=&https://pic1.zhimg.com/50/07359fdefa430fb4e39a65e2ae2cc88e_b.jpg& data-rawwidth=&695& data-rawheight=&447& class=&origin_image zh-lightbox-thumb& width=&695& data-original=&https://pic1.zhimg.com/50/07359fdefa430fb4e39a65e2ae2cc88e_r.jpg&&&/figure&&br&&figure&&img src=&https://pic3.zhimg.com/50/aded181b9e2a1dd6f90cdfb6ace80984_b.jpg& data-rawwidth=&275& data-rawheight=&232& class=&content_image& width=&275&&&/figure&&br&对于关注我的童鞋,谢谢你,代码拿去&br&&br&词频统计和词云的代码&br&&div class=&highlight&&&pre&&code class=&language-python&&&span class=&kn&&from&/span& &span class=&nn&&wordcloud&/span& &span class=&kn&&import&/span& &span class=&n&&WordCloud&/span&
&span class=&kn&&import&/span& &span class=&nn&&jieba&/span&
&span class=&kn&&import&/span& &span class=&nn&&PIL&/span&
&span class=&kn&&import&/span& &span class=&nn&&matplotlib.pyplot&/span& &span class=&kn&&as&/span& &span class=&nn&&plt&/span&
&span class=&kn&&import&/span& &span class=&nn&&numpy&/span& &span class=&kn&&as&/span& &span class=&nn&&np&/span&
&span class=&k&&def&/span& &span class=&nf&&wordcloudplot&/span&&span class=&p&&(&/span&&span class=&n&&txt&/span&&span class=&p&&):&/span&
&span class=&n&&path&/span&&span class=&o&&=&/span&&span class=&s&&'d:/jieba/msyh.ttf'&/span&
&span class=&n&&path&/span&&span class=&o&&=&/span&&span class=&nb&&unicode&/span&&span class=&p&&(&/span&&span class=&n&&path&/span&&span class=&p&&,&/span& &span class=&s&&'utf8'&/span&&span class=&p&&)&/span&&span class=&o&&.&/span&&span class=&n&&encode&/span&&span class=&p&&(&/span&&span class=&s&&'gb18030'&/span&&span class=&p&&)&/span&
&span class=&n&&alice_mask&/span& &span class=&o&&=&/span& &span class=&n&&np&/span&&span class=&o&&.&/span&&span class=&n&&array&/span&&span class=&p&&(&/span&&span class=&n&&PIL&/span&&span class=&o&&.&/span&&span class=&n&&Image&/span&&span class=&o&&.&/span&&span class=&n&&open&/span&&span class=&p&&(&/span&&span class=&s&&'d:/jieba/she.jpg'&/span&&span class=&p&&))&/span&
&span class=&n&&wordcloud&/span& &span class=&o&&=&/span& &span class=&n&&WordCloud&/span&&span class=&p&&(&/span&&span class=&n&&font_path&/span&&span class=&o&&=&/span&&span class=&n&&path&/span&&span class=&p&&,&/span&
&span class=&n&&background_color&/span&&span class=&o&&=&/span&&span class=&s&&&white&&/span&&span class=&p&&,&/span&
&span class=&n&&margin&/span&&span class=&o&&=&/span&&span class=&mi&&5&/span&&span class=&p&&,&/span& &span class=&n&&width&/span&&span class=&o&&=&/span&&span class=&mi&&1800&/span&&span class=&p&&,&/span& &span class=&n&&height&/span&&span class=&o&&=&/span&&span class=&mi&&800&/span&&span class=&p&&,&/span&&span class=&n&&mask&/span&&span class=&o&&=&/span&&span class=&n&&alice_mask&/span&&span class=&p&&,&/span&&span class=&n&&max_words&/span&&span class=&o&&=&/span&&span class=&mi&&2000&/span&&span class=&p&&,&/span&&span class=&n&&max_font_size&/span&&span class=&o&&=&/span&&span class=&mi&&60&/span&&span class=&p&&,&/span&&span class=&n&&random_state&/span&&span class=&o&&=&/span&&span class=&mi&&42&/span&&span class=&p&&)&/span&
&span class=&n&&wordcloud&/span& &span class=&o&&=&/span& &span class=&n&&wordcloud&/span&&span class=&o&&.&/span&&span class=&n&&generate&/span&&span class=&p&&(&/span&&span class=&n&&txt&/span&&span class=&p&&)&/span&
&span class=&n&&wordcloud&/span&&span class=&o&&.&/span&&span class=&n&&to_file&/span&&span class=&p&&(&/span&&span class=&s&&'d:/jieba/she2.jpg'&/span&&span class=&p&&)&/span&
&span class=&n&&plt&/span&&span class=&o&&.&/span&&span class=&n&&imshow&/span&&span class=&p&&(&/span&&span class=&n&&wordcloud&/span&&span class=&p&&)&/span&
&span class=&n&&plt&/span&&span class=&o&&.&/span&&span class=&n&&axis&/span&&span class=&p&&(&/span&&span class=&s&&&off&&/span&&span class=&p&&)&/span&
&span class=&n&&plt&/span&&span class=&o&&.&/span&&span class=&n&&show&/span&&span class=&p&&()&/span&
&span class=&k&&def&/span& &span class=&nf&&main&/span&&span class=&p&&():&/span&
&span class=&n&&a&/span&&span class=&o&&=&/span&&span class=&p&&[]&/span&
&span class=&n&&f&/span&&span class=&o&&=&/span&&span class=&nb&&open&/span&&span class=&p&&(&/span&&span class=&s&&r'd:\jieba\book\she.txt'&/span&&span class=&p&&,&/span&&span class=&s&&'r'&/span&&span class=&p&&)&/span&&span class=&o&&.&/span&&span class=&n&&read&/span&&span class=&p&&()&/span&
&span class=&n&&words&/span&&span class=&o&&=&/span&&span class=&nb&&list&/span&&span class=&p&&(&/span&&span class=&n&&jieba&/span&&span class=&o&&.&/span&&span class=&n&&cut&/span&&span class=&p&&(&/span&&span class=&n&&f&/span&&span class=&p&&))&/span&
&span class=&k&&for&/span& &span class=&n&&word&/span& &span class=&ow&&in&/span& &span class=&n&&words&/span&&span class=&p&&:&/span&
&span class=&k&&if&/span& &span class=&nb&&len&/span&&span class=&p&&(&/span&&span class=&n&&word&/span&&span class=&p&&)&/span&&span class=&o&&&&/span&&span class=&mi&&1&/span&&span class=&p&&:&/span&
&span class=&n&&a&/span&&span class=&o&&.&/span&&span class=&n&&append&/span&&span class=&p&&(&/span&&span class=&n&&word&/span&&span class=&p&&)&/span&
&span class=&n&&txt&/span&&span class=&o&&=&/span&&span class=&s&&r' '&/span&&span class=&o&&.&/span&&span class=&n&&join&/span&&span class=&p&&(&/span&&span class=&n&&a&/span&&span class=&p&&)&/span&
&span class=&n&&wordcloudplot&/span&&span class=&p&&(&/span&&span class=&n&&txt&/span&&span class=&p&&)&/span&
&span class=&k&&if&/span& &span class=&n&&__name__&/span&&span class=&o&&==&/span&&span class=&s&&'__main__'&/span&&span class=&p&&:&/span&
&span class=&n&&main&/span&&span class=&p&&()&/span&
&/code&&/pre&&/div&&br&爬知乎女神的代码&div class=&highlight&&&pre&&code class=&language-python&&&span class=&kn&&import&/span& &span class=&nn&&requests&/span&
&span class=&kn&&import&/span& &span class=&nn&&urllib&/span&
&span class=&kn&&import&/span& &span class=&nn&&re&/span&
&span class=&kn&&import&/span& &span class=&nn&&random&/span&
&span class=&kn&&from&/span& &span class=&nn&&time&/span& &span class=&kn&&import&/span& &span class=&n&&sleep&/span&
&span class=&k&&def&/span& &span class=&nf&&main&/span&&span class=&p&&():&/span&
&span class=&n&&url&/span&&span class=&o&&=&/span&&span class=&s&&'xxx'&/span&
&span class=&n&&headers&/span&&span class=&o&&=&/span&&span class=&p&&{&/span&&span class=&n&&xxx&/span&&span class=&p&&}&/span&
&span class=&n&&i&/span&&span class=&o&&=&/span&&span class=&mi&&925&/span&
&span class=&k&&for&/span& &span class=&n&&x&/span& &span class=&ow&&in&/span& &span class=&nb&&xrange&/span&&span class=&p&&(&/span&&span class=&mi&&1020&/span&&span class=&p&&,&/span&&span class=&mi&&2000&/span&&span class=&p&&,&/span&&span class=&mi&&20&/span&&span class=&p&&):&/span&
&span class=&n&&data&/span&&span class=&o&&=&/span&&span class=&p&&{&/span&&span class=&s&&'start'&/span&&span class=&p&&:&/span&&span class=&s&&'1000'&/span&&span class=&p&&,&/span&
&span class=&s&&'offset'&/span&&span class=&p&&:&/span&&span class=&nb&&str&/span&&span class=&p&&(&/span&&span class=&n&&x&/span&&span class=&p&&),&/span&
&span class=&s&&'_xsrf'&/span&&span class=&p&&:&/span&&span class=&s&&'a5a69348cef94c38f4e428'&/span&&span class=&p&&}&/span&
&span class=&n&&content&/span&&span class=&o&&=&/span&&span class=&n&&requests&/span&&span class=&o&&.&/span&&span class=&n&&post&/span&&span class=&p&&(&/span&&span class=&n&&url&/span&&span class=&p&&,&/span&&span class=&n&&headers&/span&&span class=&o&&=&/span&&span class=&n&&headers&/span&&span class=&p&&,&/span&&span class=&n&&data&/span&&span class=&o&&=&/span&&span class=&n&&data&/span&&span class=&p&&,&/span&&span class=&n&&timeout&/span&&span class=&o&&=&/span&&span class=&mi&&10&/span&&span class=&p&&)&/span&&span class=&o&&.&/span&&span class=&n&&text&/span&
&span class=&n&&imgs&/span&&span class=&o&&=&/span&&span class=&n&&re&/span&&span class=&o&&.&/span&&span class=&n&&findall&/span&&span class=&p&&(&/span&&span class=&s&&'&img src=&/span&&span class=&se&&\\\\\&&/span&&span class=&s&&(.*?)_m.jpg'&/span&&span class=&p&&,&/span&&span class=&n&&content&/span&&span class=&p&&)&/span&
&span class=&k&&for&/span& &span class=&n&&img&/span& &span class=&ow&&in&/span& &span class=&n&&imgs&/span&&span class=&p&&:&/span&
&span class=&k&&try&/span&&span class=&p&&:&/span&
&span class=&n&&img&/span&&span class=&o&&=&/span&&span class=&n&&img&/span&&span class=&o&&.&/span&&span class=&n&&replace&/span&&span class=&p&&(&/span&&span class=&s&&'&/span&&span class=&se&&\\&/span&&span class=&s&&'&/span&&span class=&p&&,&/span&&span class=&s&&''&/span&&span class=&p&&)&/span&
&span class=&n&&pic&/span&&span class=&o&&=&/span&&span class=&n&&img&/span&&span class=&o&&+&/span&&span class=&s&&'.jpg'&/span&
&span class=&n&&path&/span&&span class=&o&&=&/span&&span class=&s&&'d:&/span&&span class=&se&&\\&/span&&span class=&s&&bs4&/span&&span class=&se&&\\&/span&&span class=&s&&zhihu&/span&&span class=&se&&\\&/span&&span class=&s&&jpg4&/span&&span class=&se&&\\&/span&&span class=&s&&'&/span&&span class=&o&&+&/span&&span class=&nb&&str&/span&&span class=&p&&(&/span&&span class=&n&&i&/span&&span class=&p&&)&/span&&span class=&o&&+&/span&&span class=&s&&'.jpg'&/span&
&span class=&n&&urllib&/span&&span class=&o&&.&/span&&span class=&n&&urlretrieve&/span&&span class=&p&&(&/span&&span class=&n&&pic&/span&&span class=&p&&,&/span&&span class=&n&&path&/span&&span class=&p&&)&/span&
&span class=&k&&print&/span& &span class=&p&&(&/span&&span class=&s&&'下载了第'&/span&&span class=&o&&+&/span&&span class=&nb&&str&/span&&span class=&p&&(&/span&&span class=&n&&i&/span&&span class=&p&&)&/span&&span class=&o&&+&/span&&span class=&s&&u'张图片'&/span&&span class=&p&&)&/span&
&span class=&n&&i&/span&&span class=&o&&+=&/span&&span class=&mi&&1&/span&
&span class=&n&&sleep&/span&&span class=&p&&(&/span&&span class=&n&&random&/span&&span class=&o&&.&/span&&span class=&n&&uniform&/span&&span class=&p&&(&/span&&span class=&mf&&0.5&/span&&span class=&p&&,&/span&&span class=&mi&&1&/span&&span class=&p&&))&/span&
&span class=&k&&except&/span&&span class=&p&&:&/span&
&span class=&k&&print&/span& &span class=&p&&(&/span&&span class=&s&&'抓漏1张'&/span&&span class=&p&&)&/span&
&span class=&k&&pass&/span&
&span class=&n&&sleep&/span&&span class=&p&&(&/span&&span class=&n&&random&/span&&span class=&o&&.&/span&&span class=&n&&uniform&/span&&span class=&p&&(&/span&&span class=&mf&&0.5&/span&&span class=&p&&,&/span&&span class=&mi&&1&/span&&span class=&p&&))&/span&
&span class=&k&&if&/span& &span class=&n&&__name__&/span&&span class=&o&&==&/span&&span class=&s&&'__main__'&/span&&span class=&p&&:&/span&
&span class=&n&&main&/span&&span class=&p&&()&/span&
&/code&&/pre&&/div&
对《还珠格格》进行词频统计 对《还珠格格》的词频统计生成词云标签 将《2016年中国政府工作报告》变成词云是这样的 然后是《小时代》 以小燕子照片为词云背景 对《射雕英雄传》进行词频统计并以郭靖剧照作为词云背景 有没有满满的即视感? 一个Web端的电影…
&figure&&img src=&https://pic2.zhimg.com/b052eb5a_b.jpg& data-rawwidth=&1024& data-rawheight=&819& class=&origin_image zh-lightbox-thumb& width=&1024& data-original=&https://pic2.zhimg.com/b052eb5a_r.jpg&&&/figure&(欢迎转载到个人朋友圈,转载时请带原文链接,公众号和其他媒体转载前请私信联系本人获取授权)&br&&p&首先对&a href=&https://www.zhihu.com/people/2eeb47a8aefa& data-hash=&2eeb47a8aefa& class=&member_mention& data-editable=&true& data-title=&@MayaG& data-hovercard=&p$b$2eeb47a8aefa&&@MayaG&/a&表示感谢,这篇文章是被你提的问题激发出的灵感,非常感谢~&/p&&p&数据清洗, 是整个数据分析过程中不可缺少的一个环节,其结果质量直接关系到模型效果和最终结论。在实际操作中,数据清洗通常会占据分析过程的50%—80%的时间。国外有些学术机构会专门研究如何做数据清洗,相关的书籍也不少。&/p&&p&&figure&&img src=&https://pic4.zhimg.com/36b95d725db797c3fff4_b.jpg& data-rawwidth=&1310& data-rawheight=&545& class=&origin_image zh-lightbox-thumb& width=&1310& data-original=&https://pic4.zhimg.com/36b95d725db797c3fff4_r.jpg&&&/figure&(美亚搜data cleaning的结果,可以看到这书还挺贵)&/p&&p&我将在这篇文章中,尝试非常浅层次的梳理一下数据清洗过程,供各位参考。&/p&&p&照例,先上图:&/p&&br&&figure&&img src=&https://pic1.zhimg.com/8aee59b038c0f3a15d4e2d871bfd5ffb_b.jpg& data-rawwidth=&576& data-rawheight=&424& class=&origin_image zh-lightbox-thumb& width=&576& data-original=&https://pic1.zhimg.com/8aee59b038c0f3a15d4e2d871bfd5ffb_r.jpg&&&/figure&&h2&&b&预处理阶段&/b&&/h2&预处理阶段主要做两件事情:&p&一是将数据导入处理工具。通常来说,建议使用数据库,单机跑数搭建MySQL环境即可。如果数据量大(千万级以上),可以使用文本文件存储+Python操作的方式。&/p&&p&二是看数据。这里包含两个部分:一是看元数据,包括字段解释、数据来源、代码表等等一切描述数据的信息;二是抽取一部分数据,使用人工查看方式,对数据本身有一个直观的了解,并且初步发现一些问题,为之后的处理做准备。&br&&/p&&h2&&b&第一步:缺失值清洗&/b&&/h2&&p&缺失值是最常见的数据问题,处理缺失值也有很多方法,我建议按照以下四个步骤进行:&/p&&p&&b&1、确定缺失值范围:&/b&对每个字段都计算其缺失值比例,然后按照缺失比例和字段重要性,分别制定策略,可用下图表示:&/p&&p&&figure&&img src=&https://pic3.zhimg.com/20af3ec9d1b1a4e4ddb43d_b.jpg& data-rawwidth=&1280& data-rawheight=&720& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&https://pic3.zhimg.com/20af3ec9d1b1a4e4ddb43d_r.jpg&&&/figure&&b&2、去除不需要的字段:&/b&这一步很简单,直接删掉即可……但强烈建议清洗每做一步都备份一下,或者在小规模数据上试验成功再处理全量数据,不然删错了会追悔莫及(多说一句,写SQL的时候delete一定要配where!)。&/p&&p&&b&3、填充缺失内容:&/b&某些缺失值可以进行填充,方法有以下三种:&/p&&ul&&li&以业务知识或经验推测填充缺失值&/li&&li&以同一指标的计算结果(均值、中位数、众数等)填充缺失值&/li&&li&以不同指标的计算结果填充缺失值&/li&&/ul&&br&前两种方法比较好理解。关于第三种方法,举个最简单的例子:年龄字段缺失,但是有屏蔽后六位的身份证号,so……&p&&b&4、重新取数:&/b&如果某些指标非常重要又缺失率高,那就需要和取数人员或业务人员了解,是否有其他渠道可以取到相关数据。&/p&&br&&p&以上,简单的梳理了缺失值清洗的步骤,但其中有一些内容远比我说的复杂,比如填充缺失值。很多讲统计方法或统计工具的书籍会提到相关方法,有兴趣的各位可以自行深入了解。&/p&&h2&&b&第二步:格式内容清洗&/b&&/h2&如果数据是由系统日志而来,那么通常在格式和内容方面,会与元数据的描述一致。而如果数据是由人工收集或用户填写而来,则有很大可能性在格式和内容上存在一些问题,简单来说,格式内容问题有以下几类:&p&&b&1、时间、日期、数值、全半角等显示格式不一致&/b&&/p&&p&这种问题通常与输入端有关,在整合多来源数据时也有可能遇到,将其处理成一致的某种格式即可。&/p&&p&&b&2、内容中有不该存在的字符&/b&&/p&&p&某些内容可能只包括一部分字符,比如身份证号是数字+字母,中国人姓名是汉字(赵C这种情况还是少数)。最典型的就是头、尾、中间的空格,也可能出现姓名中存在数字符号、身份证号中出现汉字等问题。这种情况下,需要以半自动校验半人工方式来找出可能存在的问题,并去除不需要的字符。&/p&&p&&b&3、内容与该字段应有内容不符&/b&&/p&&p&姓名写了性别,身份证号写了手机号等等,均属这种问题。 但该问题特殊性在于:并不能简单的以删除来处理,因为成因有可能是人工填写错误,也有可能是前端没有校验,还有可能是导入数据时部分或全部存在列没有对齐的问题,因此要详细识别问题类型。&/p&&p&格式内容问题是比较细节的问题,但很多分析失误都是栽在这个坑上,比如跨表关联或VLOOKUP失败(多个空格导致工具认为“陈丹奕”和“陈 丹奕”不是一个人)、统计值不全(数字里掺个字母当然求和时结果有问题)、模型输出失败或效果不好(数据对错列了,把日期和年龄混了,so……)。因此,请各位务必注意这部分清洗工作,尤其是在处理的数据是人工收集而来,或者你确定产品前端校验设计不太好的时候……&/p&&h2&&b&第三步:逻辑错误清洗&/b&&/h2&&p&这部分的工作是去掉一些使用简单逻辑推理就可以直接发现问题的数据,防止分析结果走偏。主要包含以下几个步骤:&/p&&p&&b&1、去重&/b&&/p&&p&有的分析师喜欢把去重放在第一步,但我强烈建议把去重放在格式内容清洗之后,原因已经说过了(多个空格导致工具认为“陈丹奕”和“陈 丹奕”不是一个人,去重失败)。而且,并不是所有的重复都能这么简单的去掉……&/p&&p&我曾经做过电话销售相关的数据分析,发现销售们为了抢单简直无所不用其极……举例,一家公司叫做“ABC管家有限公司“,在销售A手里,然后销售B为了抢这个客户,在系统里录入一个”ABC官家有限公司“。你看,不仔细看你都看不出两者的区别,而且就算看出来了,你能保证没有”ABC官家有限公司“这种东西的存在么……这种时候,要么去抱RD大腿要求人家给你写模糊匹配算法,要么肉眼看吧。&/p&&p&上边这个还不是最狠的,请看下图:&/p&&p&&figure&&img src=&https://pic4.zhimg.com/8df128a1da564c830db8ea_b.jpg& data-rawwidth=&1344& data-rawheight=&375& class=&origin_image zh-lightbox-thumb& width=&1344& data-original=&https://pic4.zhimg.com/8df128a1da564c830db8ea_r.jpg&&&/figure&你用的系统里很有可能两条路都叫八里庄路,敢直接去重不?(附送去重小tips:两个八里庄路的门牌号范围不一样)&/p&&p&当然,如果数据不是人工录入的,那么简单去重即可。&/p&&p&&b&2、去除不合理值&/b&&/p&&p&一句话就能说清楚:有人填表时候瞎填,年龄200岁,年收入100000万(估计是没看见”万“字),这种的就要么删掉,要么按缺失值处理。这种值如何发现?提示:可用但不限于箱形图(Box-plot).&/p&&p&&b&3、修正矛盾内容&/b&&/p&&p&有些字段是可以互相验证的,举例:身份证号是XXXXXXXX,然后年龄填18岁,我们虽然理解人家永远18岁的想法,但得知真实年龄可以给用户提供更好的服务啊(又瞎扯……)。在这种时候,需要根据字段的数据来源,来判定哪个字段提供的信息更为可靠,去除或重构不可靠的字段。&/p&&p&逻辑错误除了以上列举的情况,还有很多未列举的情况,在实际操作中要酌情处理。另外,这一步骤在之后的数据分析建模过程中有可能重复,因为即使问题很简单,也并非所有问题都能够一次找出,我们能做的是使用工具和方法,尽量减少问题出现的可能性,使分析过程更为高效。&/p&&br&&h2&&b&第四步:非需求数据清洗&/b&&/h2&&p&这一步说起来非常简单:把不要的字段删了。&/p&&p&但实际操作起来,有很多问题,例如:&/p&&ul&&li&把看上去不需要但实际上对业务很重要的字段删了;&/li&&li&某个字段觉得有用,但又没想好怎么用,不知道是否该删;&/li&&li&一时看走眼,删错字段了。&/li&&/ul&&br&前两种情况我给的建议是:如果数据量没有大到不删字段就没办法处理的程度,那么能不删的字段尽量不删。第三种情况,请勤备份数据……&h2&&b&第五步:关联性验证&/b&&/h2&&p&如果你的数据有多个来源,那么有必要进行关联性验证。例如,你有汽车的线下购买信息,也有电话客服问卷信息,两者通过姓名和手机号关联,那么要看一下,同一个人线下登记的车辆信息和线上问卷问出来的车辆信息是不是同一辆,如果不是(别笑,业务流程设计不好是有可能出现这种问题的!),那么需要调整或去除数据。&/p&&p&严格意义上来说,这已经脱离数据清洗的范畴了,而且关联数据变动在数据库模型中就应该涉及。但我还是希望提醒大家,多个来源的数据整合是非常复杂的工作,一定要注意数据之间的关联性,尽量在分析过程中不要出现数据之间互相矛盾,而你却毫无察觉的情况。&/p&&p&以上,就是我对数据清洗过程的一个简单梳理。由于能力所限,难免挂一漏万,请各位不吝赐教,感谢。&/p&
(欢迎转载到个人朋友圈,转载时请带原文链接,公众号和其他媒体转载前请私信联系本人获取授权) 首先对表示感谢,这篇文章是被你提的问题激发出的灵感,非常感谢~数据清洗, 是整个数据分析过程中不可缺少的一个环节,其结果质量直接关系到模型效果…
&figure&&img src=&https://pic2.zhimg.com/v2-dda5d0fecb223_b.jpg& data-rawwidth=&489& data-rawheight=&150& class=&origin_image zh-lightbox-thumb& width=&489& data-original=&https://pic2.zhimg.com/v2-dda5d0fecb223_r.jpg&&&/figure&&p&更新:上个版本利用了一些自用框架PSpider的函数,更新后的版本只用到了requests库,并改写为Class的形式,方便大家运行调试。&/p&&p&--------------------------------------------------------------------------------------------------------&/p&&p&干货来啦,如果你想学习Python模拟登陆,如果你想知道如何利用抓包工具一步步获得网站登陆流程,如果你想破解网站登陆加密算法,那么这篇文章绝对对得起你!&/p&&p&标题随便起的,不喜勿喷,但这篇文章确实很详细的解析了新浪微博登录流程,包括各种加密算法解析、验证码解析、跳转解析等等。另外还有登录的代码供参考,代码在文章最后给出,同时也上传到了GitHub,大家可以参考一下。&/p&&p&登录代码地址:&a href=&https://link.zhihu.com/?target=https%3A//github.com/xianhu/LearnPython& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&GitHub - xianhu/LearnPython: 以撸代码的形式学习Python&/a&。&/p&&p&代码中用到了爬虫框架PSpider中的一些函数,框架见:&a href=&https://zhuanlan.zhihu.com/p/& class=&internal&&一个极为简洁的Python爬虫框架&/a&。&/p&&p&需要学习一下爬虫基础的,请移步:&a href=&https://zhuanlan.zhihu.com/p/& class=&internal&&一个很“水”的Python爬虫入门代码文件&/a&。&/p&&p&如果你想用Python模拟登陆新浪微博,首先肯定要去百度一些相关的知识,了解各位前辈们已经做得一些工作。这里通过搜索可以知道,新浪微博在登录时,对用户名、密码进行了加密处理,也知道了加密算法(b64encode、rsa等等)。这里先有个大体印象,我会一步步交给大家怎么自己去发现新浪微博的加密算法,毕竟授人以鱼不如授人以渔嘛!&/p&&p&这里用到的工具是Charles,是Mac下的一个抓包工具。Windows下对应的是Fiddler。如果你不会用,或者不熟悉,建议先安装一个,自己动手熟悉一下软件的用法。&/p&&p&好了,准备工作完成了,废话不多说,开始干货!&/p&&p&(1)开启Charles后,打开新浪微博的登录页面,并输入用户名、密码、验证码后登录一遍,这时候会在Charles留下整个登录的流程,后边慢慢分析。&/p&&figure&&img src=&https://pic2.zhimg.com/v2-f5de057e7b2c225f9d95d7b38b489689_b.jpg& data-rawwidth=&2040& data-rawheight=&1120& class=&origin_image zh-lightbox-thumb& width=&2040& data-original=&https://pic2.zhimg.com/v2-f5de057e7b2c225f9d95d7b38b489689_r.jpg&&&/figure&&p&(2)分析的第一步,要知道用户名如何加密。在Charles中搜索“username”。为什么这么搜?你如果是做网站的,估计90%的可能都会把用户名变量命名为username吧!搜索后看到只有文件loginLayers.js中包含username,该文件的命名也说明跟文件相关,根据经验应该能判断出这个文件很重要。&/p&&figure&&img src=&https://pic3.zhimg.com/v2-466fde74c279fe2bdab515e977f1d96d_b.jpg& data-rawwidth=&2642& data-rawheight=&1722& class=&origin_image zh-lightbox-thumb& width=&2642& data-original=&https://pic3.zhimg.com/v2-466fde74c279fe2bdab515e977f1d96d_r.jpg&&&/figure&&p&(3)将这个文件的内容复制出来,放到一个文本文件中,搜索username,会找到下边图示中的这么几行代码,从而得知用户名的加密方式。用户名加密方法很简单,encode之后紧跟一个base64即可。具体用Python怎么写,自己看代码。&/p&&p&&figure&&img src=&https://pic4.zhimg.com/v2-d30f0f8f41c46f4dd871fb_b.jpg& data-rawwidth=&1160& data-rawheight=&434& class=&origin_image zh-lightbox-thumb& width=&1160& data-original=&https://pic4.zhimg.com/v2-d30f0f8f41c46f4dd871fb_r.jpg&&&/figure&(4)用户名加密完了,应该要加密密码了。继续在这个文件中搜索password,得到:&/p&&p&&figure&&img src=&https://pic4.zhimg.com/v2-985cca6b9f59a75e08231e_b.jpg& data-rawwidth=&2462& data-rawheight=&976& class=&origin_image zh-lightbox-thumb& width=&2462& data-original=&https://pic4.zhimg.com/v2-985cca6b9f59a75e08231e_r.jpg&&&/figure&这里可以推测出this.login中的参数b应该就是password。查看login函数,可以得到:&br&&/p&&figure&&img src=&https://pic2.zhimg.com/v2-d6aa2eed_b.jpg& data-rawwidth=&2318& data-rawheight=&850& class=&origin_image zh-lightbox-thumb& width=&2318& data-original=&https://pic2.zhimg.com/v2-d6aa2eed_r.jpg&&&/figure&&p&这里调用了loginByXMLHttpRequest函数,并传入参数b,即password。所以我们继续搜索loginByXMLHttpRequest,得到:&/p&&figure&&img src=&https://pic2.zhimg.com/v2-f2bb15e7cce2dd92e83d634_b.jpg& data-rawwidth=&2148& data-rawheight=&942& class=&origin_image zh-lightbox-thumb& width=&2148& data-original=&https://pic2.zhimg.com/v2-f2bb15e7cce2dd92e83d634_r.jpg&&&/figure&&p&这里调用了makeXMLRequestQuery函数,并传入参数b,即password。所以我们继续搜索makeXMLRequestQuery,得到:&/p&&figure&&img src=&https://pic4.zhimg.com/v2-71a3d29b7be99fcf718ac56e2d071148_b.jpg& data-rawwidth=&2230& data-rawheight=&920& class=&origin_image zh-lightbox-thumb& width=&2230& data-original=&https://pic4.zhimg.com/v2-71a3d29b7be99fcf718ac56e2d071148_r.jpg&&&/figure&&p&这里调用了makeRequest函数,并传入参数b,即password。所以我们继续搜索makeRequest,得到:&/p&&p&&figure&&img src=&https://pic4.zhimg.com/v2-e2dcb105aa49eb6e7c927_b.jpg& data-rawwidth=&2194& data-rawheight=&936& class=&origin_image zh-lightbox-thumb& width=&2194& data-original=&https://pic4.zhimg.com/v2-e2dcb105aa49eb6e7c927_r.jpg&&&/figure&这里就可以清晰的看到密码加密流程。具体Python怎么实现,还是自己看代码。但是这里有个问题,密码加密的时候,会有几个参数需要传入,比如nonce、servertime、rsakv等等,这是什么鬼呢?继续往下看。&/p&&p&(5)在Charles中搜索servertime,会得到一个prelogin的请求,该请求返回servertime、nonce、pubkey等参数。这里返回的是一个json串。&/p&&figure&&img src=&https://pic3.zhimg.com/v2-cf16fe82e9b9e10fa99fa_b.jpg& data-rawwidth=&2166& data-rawheight=&648& class=&origin_image zh-lightbox-thumb& width=&2166& data-original=&https://pic3.zhimg.com/v2-cf16fe82e9b9e10fa99fa_r.jpg&&&/figure&&p&查看该请求的request,可以看到他需要加密后的用户名su。根据这里的参数,就可以对密码进行加密了。这里稍微回想总结下整个流程:&/p&&ul&&li&根据用户名username得到加密后的用户名su&/li&&li&根据su得到一个json串,里边包含加密密码用到的各种参数,servertime、nonce等&/li&&li&根据json串和密码得到加密后的密码,然后就可以登陆了。&/li&&/ul&&p&(6)在Charles中可以找到一个login.php请求,根据经验也可以大体判断这就是登录请求,事实证明也确实如此。根据该请求的request,自己构建postdata,并发送请求即可。&figure&&img src=&https://pic2.zhimg.com/v2-09e3b5eeaa3fcc88e579b3e_b.jpg& data-rawwidth=&2642& data-rawheight=&1722& class=&origin_image zh-lightbox-thumb& width=&2642& data-original=&https://pic2.zhimg.com/v2-09e3b5eeaa3fcc88e579b3e_r.jpg&&&/figure&&/p&&p&这里需要说明下验证码问题。有些账号登录需要验证码,有些不需要,这和账号设置有关,带有登录保护的就需要输入验证码。这里也可以根据上边得到的json串中的showpin参数得知(具体见上边的图)。如果需要验证码,则只需要找到验证码的地址,得到图片:&/p&&figure&&img src=&https://pic4.zhimg.com/v2-216c9ffeabd_b.jpg& data-rawwidth=&2312& data-rawheight=&1034& class=&origin_image zh-lightbox-thumb& width=&2312& data-original=&https://pic4.zhimg.com/v2-216c9ffeabd_r.jpg&&&/figure&&p&将这个图片保存到本地进行人工打码,或者接入打码平台,都可以获取验证码内容。在我的代码中,我原本封装了云打码平台的接口,直接调用即可,但为了方便大家测试,我改为人工打码的形式,具体见代码:&/p&&figure&&img src=&https://pic4.zhimg.com/v2-f072da2cb1_b.jpg& data-rawwidth=&1722& data-rawheight=&360& class=&origin_image zh-lightbox-thumb& width=&1722& data-original=&https://pic4.zhimg.com/v2-f072da2cb1_r.jpg&&&/figure&&p&(7)构造postdata,发送请求,即便是请求成功了,其实还没登录成功。因为新浪微博还有一步跳转。是不是很麻烦?别着急,胜利马上就在眼前了。我们仔细查看Charles后,会发现在上个请求之后,有下边一个请求wbsso.login,这就是那个跳转,如下图。&/p&&p&&figure&&img src=&https://pic1.zhimg.com/v2-cc74e43e3ee32e45b93b8ca_b.jpg& data-rawwidth=&2642& data-rawheight=&1722& class=&origin_image zh-lightbox-thumb& width=&2642& data-original=&https://pic1.zhimg.com/v2-cc74e43e3ee32e45b93b8ca_r.jpg&&&/figure&该跳转请求的请求如何构建,大家看代码即可,这里就不多说了。代码如下:&/p&&figure&&img src=&https://pic3.zhimg.com/v2-6db0a64cfb4c3b268ea36d2_b.jpg& data-rawwidth=&1704& data-rawheight=&704& class=&origin_image zh-lightbox-thumb& width=&1704& data-original=&https://pic3.zhimg.com/v2-6db0a64cfb4c3b268ea36d2_r.jpg&&&/figure&&p&代码中还检查登录是否成功,这里也不过多描述。到这为止,新浪微博就算是登录成功了。&/p&&p&这里还有一个问题没有说到,就是Cookie问题。本文中一直没有提到Cookie,是因为Python中的Cookiejar会帮我们自动处理所有的cookie问题。你只需要在模拟登陆之前,首先声明一个cookiejar和opener即可,具体这两个东西的用法,大家自行百度。代码如下:&/p&&figure&&img src=&https://pic1.zhimg.com/v2-7a83f61c79cbd07f31be3c_b.jpg& data-rawwidth=&1348& data-rawheight=&328& class=&origin_image zh-lightbox-thumb& width=&1348& data-original=&https://pic1.zhimg.com/v2-7a83f61c79cbd07f31be3c_r.jpg&&&/figure&&p&模拟登陆微博真的很麻烦,也确实需要一定的经验,大家多多练习,熟练掌握了这个,相信你们在模拟登陆其他网站的时候,也能举一反三的去破解登录流程。有什么问题,可以在评论中指出,有时间我会帮大家解答的。&/p&&p&总的代码如下:&/p&&div class=&highlight&&&pre&&code class=&language-python&&&span&&/span&&span class=&c1&&# _*_ coding: utf-8 _*_&/span&
&span class=&kn&&import&/span& &span class=&nn&&re&/span&
&span class=&kn&&import&/span& &span class=&nn&&rsa&/span&
&span class=&kn&&import&/span& &span class=&nn&&time&/span&
&span class=&kn&&import&/span& &span class=&nn&&json&/span&
&span class=&kn&&import&/span& &span class=&nn&&base64&/span&
&span class=&kn&&import&/span& &span class=&nn&&logging&/span&
&span class=&kn&&import&/span& &span class=&nn&&binascii&/span&
&span class=&kn&&import&/span& &span class=&nn&&requests&/span&
&span class=&kn&&import&/span& &span class=&nn&&urllib.parse&/span&
&span class=&k&&class&/span& &span class=&nc&&WeiBoLogin&/span&&span class=&p&&(&/span&&span class=&nb&&object&/span&&span class=&p&&):&/span&
&span class=&sd&&&&&&/span&
&span class=&sd&&
class of WeiBoLogin, to login weibo.com&/span&
&span class=&sd&&
&&&&/span&
&span class=&k&&def&/span& &span class=&nf&&__init__&/span&&span class=&p&&(&/span&&span class=&bp&&self&/span&&span class=&p&&):&/span&
&span class=&sd&&&&&&/span&
&span class=&sd&&
constructor&/span&
&span class=&sd&&
&&&&/span&
&span class=&bp&&self&/span&&span class=&o&&.&/span&&span class=&n&&user_name&/span& &span class=&o&&=&/span& &span class=&bp&&None&/span&
&span class=&bp&&self&/span&&span class=&o&&.&/span&&span class=&n&&pass_word&/span& &span class=&o&&=&/span& &span class=&bp&&None&/span&
&span class=&bp&&self&/span&&span class=&o&&.&/span&&span class=&n&&user_uniqueid&/span& &span class=&o&&=&/span& &span class=&bp&&None&/span&
&span class=&bp&&self&/span&&span class=&o&&.&/span&&span class=&n&&user_nick&/span& &span class=&o&&=&/span& &span class=&bp&&None&/span&
&span class=&bp&&self&/span&&span class=&o&&.&/span&&span class=&n&&session&/span& &span class=&o&&=&/span& &span class=&n&&requests&/span&&span class=&o&&.&/span&&span class=&n&&Session&/span&&span class=&p&&()&/span&
&span class=&bp&&self&/span&&span class=&o&&.&/span&&span class=&n&&session&/span&&span class=&o&&.&/span&&span class=&n&&headers&/span&&span class=&o&&.&/span&&span class=&n&&update&/span&&span class=&p&&({&/span&&span class=&s2&&&User-Agent&&/span&&span class=&p&&:&/span& &span class=&s2&&&Mozilla/5.0 (Windows NT 6.3; WOW64; rv:41.0) Gecko/ Firefox/41.0&&/span&&span class=&p&&})&/span&
&span class=&bp&&self&/span&&span class=&o&&.&/span&&span class=&n&&session&/span&&span class=&o&&.&/span&&span class=&n&&get&/span&&span class=&p&&(&/span&&span class=&s2&&&http://weibo.com/login.php&&/span&&span class=&p&&)&/span&
&span class=&k&&return&/span&
&span class=&k&&def&/span& &span class=&nf&&login&/span&&span class=&p&&(&/span&&span class=&bp&&self&/span&&span class=&p&&,&/span& &span class=&n&&user_name&/span&&span class=&p&&,&/span& &span class=&n&&pass_word&/span&&span class=&p&&):&/span&
&span class=&sd&&&&&&/span&
&span class=&sd&&
login weibo.com, return True or False&/span&
&span class=&sd&&
&&&&/span&
&span class=&bp&&self&/span&&span class=&o&&.&/span&&span class=&n&&user_name&/span& &span class=&o&&=&/span& &span class=&n&&user_name&/span&
&span class=&bp&&self&/span&&span class=&o&&.&/span&&span class=&n&&pass_word&/span& &span class=&o&&=&/span& &span class=&n&&pass_word&/span&
&span class=&bp&&self&/span&&span class=&o&&.&/span&&span class=&n&&user_uniqueid&/span& &span class=&o&&=&/span& &span class=&bp&&None&/span&
&span class=&bp&&self&/span&&span class=&o&&.&/span&&span class=&n&&user_nick&/span& &span class=&o&&=&/span& &span class=&bp&&None&/span&
&span class=&c1&&# get json data&/span&
&span class=&n&&s_user_name&/span& &span class=&o&&=&/span& &span class=&bp&&self&/span&&span class=&o&&.&/span&&span class=&n&&get_username&/span&&span class=&p&&()&/span&
&span class=&n&&json_data&/span& &span class=&o&&=&/span& &span class=&bp&&self&/span&&span class=&o&&.&/span&&span class=&n&&get_json_data&/span&&span class=&p&&(&/span&&span class=&n&&su_value&/span&&span class=&o&&=&/span&&span class=&n&&s_user_name&/span&&span class=&p&&)&/span&
&span class=&k&&if&/span& &span class=&ow&&not&/span& &span class=&n&&json_data&/span&&span class=&p&&:&/span&
&span class=&k&&return&/span& &span class=&bp&&False&/span&
&span class=&n&&s_pass_word&/span& &span class=&o&&=&/span& &span class=&bp&&self&/span&&span class=&o&&.&/span&&span class=&n&&get_password&/span&&span class=&p&&(&/span&&span class=&n&&json_data&/span&&span class=&p&&[&/span&&span class=&s2&&&servertime&&/span&&span class=&p&&],&/span& &span class=&n&&json_data&/span&&span class=&p&&[&/span&&span class=&s2&&&nonce&&/span&&span class=&p&&],&/span& &span class=&n&&json_data&/span&&span class=&p&&[&/span&&span class=&s2&&&pubkey&&/span&&span class=&p&&])&/span&
&span class=&c1&&# make post_data&/span&
&span class=&n&&post_data&/span& &span class=&o&&=&/span& &span class=&p&&{&/span&
&span class=&s2&&&entry&&/span&&span class=&p&&:&/span& &span class=&s2&&&weibo&&/span&&span class=&p&&,&/span&
&span class=&s2&&&gateway&&/span&&span class=&p&&:&/span& &span class=&s2&&&1&&/span&&span class=&p&&,&/span&
&span class=&s2&&&from&&/span&&span class=&p&&:&/span& &span class=&s2&&&&&/span&&span class=&p&&,&/span&
&span class=&s2&&&savestate&&/span&&span class=&p&&:&/span& &span class=&s2&&&7&&/span&&span class=&p&&,&/span&
&span class=&s2&&&userticket&&/span&&span class=&p&&:&/span& &span class=&s2&&&1&&/span&&span class=&p&&,&/span&
&span class=&s2&&&vsnf&&/span&&span class=&p&&:&/span& &span class=&s2&&&1&&/span&&span class=&p&&,&/span&
&span class=&s2&&&service&&/span&&span class=&p&&:&/span& &span class=&s2&&&miniblog&&/span&&span class=&p&&,&/span&
&span class=&s2&&&encoding&&/span&&span class=&p&&:&/span& &span class=&s2&&&UTF-8&&/span&&span class=&p&&,&/span&
&span class=&s2&&&pwencode&&/span&&span class=&p&&:&/span& &span class=&s2&&&rsa2&&/span&&span class=&p&&,&/span&
&span class=&s2&&&sr&&/span&&span class=&p&&:&/span& &span class=&s2&&&&&/span&&span class=&p&&,&/span&
&span class=&s2&&&prelt&&/span&&span class=&p&&:&/span& &span class=&s2&&&529&&/span&&span class=&p&&,&/span&
&span class=&s2&&&url&&/span&&span class=&p&&:&/span& &span class=&s2&&&http://weibo.com/ajaxlogin.php?framelogin=1&callback=parent.sinaSSOController.feedBackUrlCallBack&&/span&&span class=&p&&,&/span&
&span class=&s2&&&rsakv&&/span&&span class=&p&&:&/span& &span class=&n&&json_data&/span&&span class=&p&&[&/span&&span class=&s2&&&rsakv&&/span&&span class=&p&&],&/span&
&span class=&s2&&&servertime&&/span&&span class=&p&&:&/span& &span class=&n&&json_data&/span&&span class=&p&&[&/span&&span class=&s2&&&servertime&&/span&&span class=&p&&],&/span&
&span class=&s2&&&nonce&&/span&&span class=&p&&:&/span& &span class=&n&&json_data&/span&&span class=&p&&[&/span&&span class=&s2&&&nonce&&/span&&span class=&p&&],&/span&
&span class=&s2&&&su&&/span&&span class=&p&&:&/span& &span class=&n&&s_user_name&/span&&span class=&p&&,&/span&
&span class=&s2&&&sp&&/span&&span class=&p&&:&/span& &span class=&n&&s_pass_word&/span&&span class=&p&&,&/span&
&span class=&s2&&&returntype&&/span&&span class=&p&&:&/span& &span class=&s2&&&TEXT&&/span&&span class=&p&&,&/span&
&span class=&p&&}&/span&
&span class=&c1&&# get captcha code&/span&
&span class=&k&&if&/span& &span class=&n&&json_data&/span&&span class=&p&&[&/span&&span class=&s2&&&showpin&&/span&&span class=&p&&]&/span& &span class=&o&&==&/span& &span class=&mi&&1&/span&&span class=&p&&:&/span&
&span class=&n&&url&/span& &span class=&o&&=&/span& &span class=&s2&&&http://login.sina.com.cn/cgi/pin.php?r=&/span&&span class=&si&&%d&/span&&span class=&s2&&&s=0&p=&/span&&span class=&si&&%s&/span&&span class=&s2&&&&/span& &span class=&o&&%&/span& &span class=&p&&(&/span&&span class=&nb&&int&/span&&span class=&p&&(&/span&&span class=&n&&time&/span&&span class=&o&&.&/span&&span class=&n&&time&/span&&span class=&p&&()),&/span& &span class=&n&&json_data&/span&&span class=&p&&[&/span&&span class=&s2&&&pcid&&/span&&span class=&p&&])&/span&
&span class=&k&&with&/span& &span class=&nb&&open&/span&&span class=&p&&(&/span&&span class=&s2&&&captcha.jpeg&&/span&&span class=&p&&,&/span& &span class=&s2&&&wb&&/span&&span class=&p&&)&/span& &span class=&k&&as&/span& &span class=&n&&file_out&/span&&span class=&p&&:&/span&
&span class=&n&&file_out&/span&&span class=&o&&.&/span&&span class=&n&&write&/span&&span class=&p&&(&/span&&span class=&bp&&self&/span&&span class=&o&&.&/span&&span class=&n&&session&/span&&span class=&o&&.&/span&&span class=&n&&get&/span&&span class=&p&&(&/span&&span class=&n&&url&/span&&span class=&p&&)&/span&&span class=&o&&.&/span&&span class=&n&&content&/span&&span class=&p&&)&/span&
&span class=&n&&code&/span& &span class=&o&&=&/span& &span class=&nb&&input&/span&&span class=&p&&(&/span&&span class=&s2&&&请输入验证码:&&/span&&span class=&p&&)&/span&
&span class=&n&&post_data&/span&&span class=&p&&[&/span&&span class=&s2&&&pcid&&/span&&span class=&p&&]&/span& &span class=&o&&=&/span& &span class=&n&&json_data&/span&&span class=&p&&[&/span&&span class=&s2&&&pcid&&/span&&span class=&p&&]&/span&
&span class=&n&&post_data&/span&&span class=&p&&[&/span&&span class=&s2&&&door&&/span&&span class=&p&&]&/span& &span class=&o&&=&/span& &span class=&n&&code&/span&
&span class=&c1&&# login weibo.com&/span&
&span class=&n&&login_url_1&/span& &span class=&o&&=&/span& &span class=&s2&&&http://login.sina.com.cn/sso/login.php?client=ssologin.js(v1.4.18)&_=&/span&&span class=&si&&%d&/span&&span class=&s2&&&&/span& &span class=&o&&%&/span& &span class=&nb&&int&/span&&span class=&p&&(&/span&&span class=&n&&time&/span&&span class=&o&&.&/span&&span class=&n&&time&/span&&span class=&p&&())&/span&
&span class=&n&&json_data_1&/span& &span class=&o&&=&/span& &span class=&bp&&self&/span&&span class=&o&&.&/span&&span class=&n&&session&/span&&span class=&o&&.&/span&&span class=&n&&post&/span&&span class=&p&&(&/span&&span class=&n&&login_url_1&/span&&span class=&p&&,&/span& &span class=&n&&data&/span&&span class=&o&&=&/span&&span class=&n&&post_data&/span&&span class=&p&&)&/span&&span class=&o&&.&/span&&span class=&n&&json&/span&&span class=&p&&()&/span&
&span class=&k&&if&/span& &span class=&n&&json_data_1&/span&&span class=&p&&[&/span&&span class=&s2&&&retcode&&/span&&span class=&p&&]&/span& &span class=&o&&==&/span& &span class=&s2&&&0&&/span&&span class=&p&&:&/span&
&span class=&n&&params&/span& &span class=&o&&=&/span& &span class=&p&&{&/span&
&span class=&s2&&&callback&&/span&&span class=&p&&:&/span& &span class=&s2&&&sinaSSOController.callbackLoginStatus&&/span&&span class=&p&&,&/span&
&span class=&s2&&&client&&/span&&span class=&p&&:&/span& &span class=&s2&&&ssologin.js(v1.4.18)&&/span&&span class=&p&&,&/span&
&span class=&s2&&&ticket&&/span&&span class=&p&&:&/span& &span class=&n&&json_data_1&/span&&span class=&p&&[&/span&&span class=&s2&&&ticket&&/span&&span class=&p&&],&/span&
&span class=&s2&&&ssosavestate&&/span&&span class=&p&&:&/span& &span class=&nb&&int&/span&&span class=&p&&(&/span&&span class=&n&&time&/span&&span class=&o&&.&/span&&span class=&n&&time&/span&&span class=&p&&()),&/span&
&span class=&s2&&&_&&/span&&span class=&p&&:&/span& &span class=&nb&&int&/span&&span class=&p&&(&/span&&span class=&n&&time&/span&&span class=&o&&.&/span&&span class=&n&&time&/span&&span class=&p&&()&/span&&span class=&o&&*&/span&&span class=&mi&&1000&/span&&span class=&p&&),&/span&
&span class=&p&&}&/span&
&span class=&n&&response&/span& &span class=&o&&=&/span& &span class=&bp&&self&/span&&span class=&o&&.&/span&&span class=&n&&session&/span&&span class=&o&&.&/span&&span class=&n&&get&/span&&span class=&p&&(&/span&&span class=&s2&&&https://passport.weibo.com/wbsso/login&&/span&&span class=&p&&,&/span& &span class=&n&&params&/span&&span class=&o&&=&/span&&span class=&n&&params&/span&&span class=&p&&)&/span&
&span class=&n&&json_data_2&/span& &span class=&o&&=&/span& &span class=&n&&json&/span&&span class=&o&&.&/span&&span class=&n&&loads&/span&&span class=&p&&(&/span&&span class=&n&&re&/span&&span class=&o&&.&/span&&span class=&n&&search&/span&&span class=&p&&(&/span&&span class=&s2&&r&\((?P&result&.*)\)&&/span&&span class=&p&&,&/span& &span class=&n&&response&/span&&span class=&o&&.&/span&&span class=&n&&text&/span&&span class=&p&&)&/span&&span class=&o&&.&/span&&span class=&n&&group&/span&&span class=&p&&(&/span&&span class=&s2&&&result&&/span&&span class=&p&&))&/span&
&span class=&k&&if&/span& &span class=&n&&json_data_2&/span&&span class=&p&&[&/span&&span class=&s2&&&result&&/span&&span class=&p&&]&/span& &span class=&ow&&is&/span& &span class=&bp&&True&/span&&span class=&p&&:&/span&
&span class=&bp&&self&/span&&span class=&o&&.&/span&&span class=&n&&user_uniqueid&/span& &span class=&o&&=&/span& &span class=&n&&json_data_2&/span&&span class=&p&&[&/span&&span class=&s2&&&userinfo&&/span&&span class=&p&&][&/span&&span class=&s2&&&uniqueid&&/span&&span class=&p&&]&/span&
&span class=&bp&&self&/span&&span class=&o&&.&/span&&span class=&n&&user_nick&/span& &span class=&o&&=&/span& &span class=&n&&json_data_2&/span&&span class=&p&&[&/span&&span class=&s2&&&userinfo&&/span&&span class=&p&&][&/span&&span class=&s2&&&displayname&&/span&&span class=&p&&]&/span&
&span class=&n&&logging&/span&&span class=&o&&.&/span&&span class=&n&&warning&/span&&span class=&p&&(&/span&&span class=&s2&&&WeiBoLogin succeed: &/span&&span class=&si&&%s&/span&&span class=&s2&&&&/span&&span class=&p&&,&/span& &span class=&n&&json_data_2&/span&&span class=&p&&)&/span&
&span class=&k&&else&/span&&span class=&p&&:&/span&
&span class=&n&&logging&/span&&span class=&o&&.&/span&&span class=&n&&warning&/span&&span class=&p&&(&/span&&span class=&s2&&&WeiBoLogin failed: &/span&&span class=&si&&%s&/span&&span class=&s2&&&&/span&&span class=&p&&,&/span& &span class=&n&&json_data_2&/span&&span class=&p&&)&/span&
&span class=&k&&else&/span&&span class=&p&&:&/span&
&span class=&n&&logging&/span&&span class=&o&&.&/span&&span class=&n&&warning&/span&&span class=&p&&(&/span&&span class=&s2&&&WeiBoLogin failed: &/span&&span class=&si&&%s&/span&&span class=&s2&&&&/span&&span class=&p&&,&/span& &span class=&n&&json_data_1&/span&&span class=&p&&)&/span&
&span class=&k&&return&/span& &span class=&bp&&True&/span& &span class=&k&&if&/span& &span class=&bp&&self&/span&&span class=&o&&.&/span&&span class=&n&&user_uniqueid&/span& &span class=&ow&&and&/span& &span class=&bp&&self&/span&&span class=&o&&.&/span&&span class=&n&&user_nick&/span& &span class=&k&&else&/span& &span class=&bp&&False&/span&
&span class=&k&&def&/span& &span class=&nf&&get_username&/span&&span class=&p&&(&/span&&span class=&bp&&self&/span&&span class=&p&&):&/span&
&span class=&sd&&&&&&/span&
&span class=&sd&&
get legal username&/span&
&span class=&sd&&
&&&&/span&
&span class=&n&&username_quote&/span& &span class=&o&&=&/span& &span class=&n&&urllib&/span&&span class=&o&&.&/span&&span class=&n&&parse&/span&&span class=&o&&.&/span&&span class=&n&&quote_plus&/span&&span class=&p&&(&/span&&span class=&bp&&self&/span&&span class=&o&&.&/span&&span class=&n&&user_name&/span&&span class=&p&&)&/span&
&span class=&n&&username_base64&/span& &span class=&o&&=&/span& &span class=&n&&base64&/span&&span class=&o&&.&/span&&span class=&n&&b64encode&/span&&span class=&p&&(&/span&&span class=&n&&username_quote&/span&&span class=&o&&.&/span&&span class=&n&&encode&/span&&span class=&p&&(&/span&&span class=&s2&&&utf-8&&/span&&span class=&p&&))&/span&
&span class=&k&&return&/span& &span class=&n&&username_base64&/span&&span class=&o&&.&/span&&span class=&n&&decode&/span&&span class=&p&&(&/span&&span class=&s2&&&utf-8&&/span&&span class=&p&&)&/span&
&span class=&k&&def&/span& &span class=&nf&&get_json_data&/span&&span class=&p&&(&/span&&span class=&bp&&self&/span&&span class=&p&&,&/span& &span class=&n&&su_value&/span&&span class=&p&&):&/span&
&span class=&sd&&&&&&/span&
&span class=&sd&&
get the value of &servertime&, &nonce&, &pubkey&, &rsakv& and &showpin&, etc&/span&
&span class=&sd&&
&&&&/span&
&span class=&n&&params&/span& &span class=&o&&=&/span& &span class=&p&&{&/span&
&span class=&s2&&&entry&&/span&&span class=&p&&:&/span& &span class=&s2&&&weibo&&/span&&span class=&p&&,&/span&
&span class=&s2&&&callback&&/span&&span class=&p&&:&/span& &span class=&s2&&&sinaSSOController.preloginCallBack&&/span&&span class=&p&&,&/span&
&span class=&s2&&&rsakt&&/span&&span class=&p&&:&/span& &span class=&s2&&&mod&&/span&&span class=&p&&,&/span&
&span class=&s2&&&checkpin&&/span&&span class=&p&&:&/span& &span class=&s2&&&1&&/span&&span class=&p&&,&/span&
&span class=&s2&&&client&&/span&&span class=&p&&:&/span& &span class=&s2&&&ssologin.js(v1.4.18)&&/span&&span class=&p&&,&/span&
&span class=&s2&&&su&&/span&&span class=&p&&:&/span& &span class=&n&&su_value&/span&&span class=&p&&,&/span&
&span class=&s2&&&_&&/span&&span class=&p&&:&/span& &span class=&nb&&int&/span&&span class=&p&&(&/span&&span class=&n&&time&/span&&span class=&o&&.&/span&&span class=&n&&time&/span&&span class=&p&&()&/span&&span class=&o&&*&/span&&span class=&mi&&1000&/span&&span class=&p&&),&/span&
&span class=&p&&}&/span&
&span class=&k&&try&/span&&span class=&p&&:&/span&
&span class=&n&&response&/span& &span class=&o&&=&/span& &span class=&bp&&self&/span&&span class=&o&&.&/span&&span class=&n&&session&/span&&span class=&o&&.&/span&&span class=&n&&get&/span&&span class=&p&&(&/span&&span class=&s2&&&http://login.sina.com.cn/sso/prelogin.php&&/span&&span class=&p&&,&/span& &span class=&n&&params&/span&&span class=&o&&=&/span&&span class=&n&&params&/span&&span class=&p&&)&/span&
&span class=&n&&json_data&/span& &span class=&o&&=&/span& &span class=&n&&json&/span&&span class=&o&&.&/span&&span class=&n&&loads&/span&&span class=&p&&(&/span&&span class=&n&&re&/span&&span class=&o&&.&/span&&span class=&n&&search&/span&&span class=&p&&(&/span&&span class=&s2&&r&\((?P&data&.*)\)&&/span&&span class=&p&&,&/span& &span class=&n&&response&/span&&span class=&o&&.&/span&&span class=&n&&text&/span&&span class=&p&&)&/span&&span class=&o&&.&/span&&span class=&n&&group&/span&&span class=&p&&(&/span&&span class=&s2&&&data&&/span&&span class=&p&&))&/span&
&span class=&k&&except&/span& &span class=&ne&&Exception&/span& &span class=&k&&as&/span& &span class=&n&&excep&/span&&span class=&p&&:&/span&
&span class=&n&&json_data&/span& &span class=&o&&=&/span& &span class=&p&&{}&/span&
&span class=&n&&logging&/span&&span class=&o&&.&/span&&span class=&n&&error&/span&&span class=&p&&(&/span&&span class=&s2&&&WeiBoLogin get_json_data error: &/span&&span class=&si&&%s&/span&&span class=&s2&&&&/span&&span class=&p&&,&/span& &span class=&n&&excep&/span&&span class=&p&&)&/span&
&span class=&n&&logging&/span&&span class=&o&&.&/span&&span class=&n&&debug&/span&&span class=&p&&(&/span&&span class=&s2&&&WeiBoLogin get_json_data: &/span&&span class=&si&&%s&/span&&span class=&s2&&&&/span&&span class=&p&&,&/span& &span class=&n&&json_data&/span&&span class=&p&&)&/span&
&span class=&k&&return&/span& &span class=&n&&json_data&/span&
&span class=&k&&def&/span& &span class=&nf&&get_password&/span&&span class=&p&&(&/span&&span class=&bp&&self&/span&&span class=&p&&,&/span& &span class=&n&&servertime&/span&&span class=&p&&,&/span& &span class=&n&&nonce&/span&&span class=&p&&,&/span& &span class=&n&&pubkey&/span&&span class=&p&&):&/span&
&span class=&sd&&&&&&/span&
&span class=&sd&&
get legal password&/span&
&span class=&sd&&
&&&&/span&
&span class=&n&&string&/span& &span class=&o&&=&/span& &span class=&p&&(&/span&&span class=&nb&&str&/span&&span class=&p&&(&/span&&span class=&n&&servertime&/span&&span class=&p&&)&/span& &span class=&o&&+&/span& &span class=&s2&&&&/span&&span class=&se&&\t&/span&&span class=&s2&&&&/span& &span class=&o&&+&/span& &span class=&nb&&str&/span&&span class=&p&&(&/span&&span class=&n&&nonce&/span&&span class=&p&&)&/span& &span class=&o&&+&/span& &span class=&s2&&&&/span&&span class=&se&&\n&/span&&span class=&s2&&&&/span& &span class=&o&&+&/span& &span class=&nb&&str&/span&&span class=&p&&(&/span&&span class=&bp&&self&/span&&span class=&o&&.&/span&&span class=&n&&pass_word&/span&&span class=&p&&))&/span&&span class=&o&&.&/span&&span class=&n&&encode&/span&&span class=&p&&(&/span&&span class=&s2&&&utf-8&&/span&&span class=&p&&)&/span&
&span class=&n&&public_key&/span& &span class=&o&&=&/span& &span class=&n&&rsa&/span&&span class=&o&&.&/span&&span class=&n&&PublicKey&/span&&span class=&p&&(&/span&&span class=&nb&&int&/span&&span class=&p&&(&/span&&span class=&n&&pubkey&/span&&span class=&p&&,&/span& &span class=&mi&&16&/span&&span class=&p&&),&/span& &span class=&nb&&int&/span&&span class=&p&&(&/span&&span class=&s2&&&10001&&/span&&span class=&p&&,&/span& &span class=&mi&&16&/span&&span class=&p&&))&/span&
&span class=&n&&password&/span& &span class=&o&&=&/span& &span class=&n&&rsa&/span&&span class=&o&&.&/span&&span class=&n&&encrypt&/span&&span class=&p&&(&/span&&span class=&n&&string&/span&&span class=&p&&,&/span& &span class=&n&&public_key&/span&&span class=&p&&)&/span&
&span class=&n&&password&/span& &span class=&o&&=&/span& &span class=&n&&binascii&/span&&span class=&o&&.&/span&&span class=&n&&b2a_hex&/span&&span class=&p&&(&/span&&span class=&n&&password&/span&&span class=&p&&)&/span&
&span class=&k&&return&/span& &span class=&n&&password&/span&&span class=&o&&.&/span&&span class=&n&&decode&/span&&span class=&p&&()&/span&
&span class=&k&&if&/span& &span class=&n&&__name__&/span& &span class=&o&&==&/span& &span class=&s2&&&__main__&&/span&&span class=&p&&:&/span&
&span class=&n&&logging&/span&&span class=&o&&.&/span&&span class=&n&&basicConfig&/span&&span class=&p&&(&/span&&span class=&n&&level&/span&&span class=&o&&=&/span&&span class=&n&&logging&/span&&span class=&o&&.&/span&&span class=&n&&DEBUG&/span&&span class=&p&&,&/span& &span class=&n&&format&/span&&span class=&o&&=&/span&&span class=&s2&&&&/span&&span class=&si&&%(asctime)s&/span&&span class

我要回帖

更多关于 藏文符号里的莲花 的文章

 

随机推荐