玩游戏一点键盘网页按钮变成方框就会有一个小黑方框跳出来,显示什么完成字符串,请问一下那个东西怎么关啊

玩游戏一点键盘按钮就会有一个小黑方框跳出来,显示什么完成字符串,请问一下那个东西怎么关啊
本回答由提问者推荐
var sogou_ad_id=731547;
var sogou_ad_height=160;
var sogou_ad_width=690;&figure&&img src=&/v2-9ee53cbf654fd54d08c7d6_b.jpg& data-rawwidth=&1080& data-rawheight=&493& class=&origin_image zh-lightbox-thumb& width=&1080& data-original=&/v2-9ee53cbf654fd54d08c7d6_r.jpg&&&/figure&&p&第一次在知乎上记录Procedure,也分享下自己跳进去的坑。&/p&&p&本Procedure中用的手机是华为Mate8,其他手机的ROOT步骤请自行百度。&/p&&p&&br&&/p&&p&&b&一、ROOT手机&/b&&/p&&p&&b&1.解锁手机(会格式化手机,注意备份资料)&/b&&/p&&p&&b&(1)设置-&云服务&/b&, 打开之后要等&b&两周之后&/b&,去EMUI官网上获取解锁码。序列号啥不知道怎么去找的话点击下图中的“如何正确填写产品序列号”,建议将所有的号保存在一个单独的txt文档中,因为一般一把成功不了,还要输第二次的。&/p&&p&&a href=&/?target=https%3A///cn/plugin/unlock/detail& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&EMUI 解锁码界面&i class=&icon-external&&&/i&&/a&&/p&&figure&&img src=&/v2-f0e066cd1f904a25c1dbd18_b.jpg& data-caption=&& data-rawwidth=&677& data-rawheight=&606& class=&origin_image zh-lightbox-thumb& width=&677& data-original=&/v2-f0e066cd1f904a25c1dbd18_r.jpg&&&/figure&&p&&b&(2)取得解锁码之后,开始解锁。&/b&&/p&&p&&b&解锁前一定要关闭设置-&云服务-&查找手机!!!&/b&&/p&&p&&b&解锁前一定要关闭设置-&云服务-&查找手机!!!&/b&&/p&&p&&b&解锁前一定要关闭设置-&云服务-&查找手机!!!&/b&&/p&&p&&br&&/p&&p&&a href=&/?target=https%3A///s/1pKRimtP& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&华为一键解锁工具&i class=&icon-external&&&/i&&/a&&/p&&p&&br&&/p&&p&打开之后是这个界面&/p&&figure&&img src=&/v2-9ad8ba50ad6c83b864672_b.jpg& data-caption=&& data-rawwidth=&671& data-rawheight=&387& class=&origin_image zh-lightbox-thumb& width=&671& data-original=&/v2-9ad8ba50ad6c83b864672_r.jpg&&&/figure&&p&将手机关机,&/p&&p&用数据线连接电脑,&/p&&p&按一下电源键,出现充电绿色的小闪电图标之后,&/p&&p&同时按住音量下键和电源键,直到出现小andriod,可以看到“PHONE LOCKED”&/p&&p&回车后,输入解锁码,回车&/p&&p&按音量上键选择yes,按一下电源键开始解锁&/p&&figure&&img src=&/v2-bed3eac1de_b.jpg& data-caption=&& data-rawwidth=&1936& data-rawheight=&2592& class=&origin_image zh-lightbox-thumb& width=&1936& data-original=&/v2-bed3eac1de_r.jpg&&&/figure&&p&解锁成功&/p&&figure&&img src=&/v2-86ca8e65554bfff462dc_b.jpg& data-caption=&& data-rawwidth=&1936& data-rawheight=&2592& class=&origin_image zh-lightbox-thumb& width=&1936& data-original=&/v2-86ca8e65554bfff462dc_r.jpg&&&/figure&&p&&a href=&/?target=https%3A///s/1mi1fZmC& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&华为系列ROOT工具&i class=&icon-external&&&/i&&/a&&/p&&figure&&img src=&/v2-9ede0915bdd_b.jpg& data-caption=&& data-rawwidth=&497& data-rawheight=&484& class=&origin_image zh-lightbox-thumb& width=&497& data-original=&/v2-9ede0915bdd_r.jpg&&&/figure&&p&输入3,安装驱动&/p&&p&略&/p&&p&&br&&/p&&p&&b&ROOT前一定要关闭设置-&云服务-&查找手机!!!&/b&&/p&&p&&b&ROOT前一定要关闭设置-&云服务-&查找手机!!!&/b&&/p&&p&&b&ROOT前一定要关闭设置-&云服务-&查找手机!!!&/b&&/p&&p&&br&&/p&&p&输入1,开始ROOT,傻话式的,等着就行了,结束后会显示:&/p&&figure&&img src=&/v2-543be69a7b_b.jpg& data-caption=&& data-rawwidth=&441& data-rawheight=&230& class=&origin_image zh-lightbox-thumb& width=&441& data-original=&/v2-543be69a7b_r.jpg&&&/figure&&p&&br&&/p&&p&&br&&/p&&p&如果看到手机里面成功安装了SuperSU,并且打开之后没有出现“二进制文件没有安装”等错误信息的话,就说明ROOT大功告成了。&/p&&p&&br&&/p&&p&FYI,如果要杀死这个进程,杀adb.exe&/p&&figure&&img src=&/v2-dffcab0bfd971_b.jpg& data-caption=&& data-rawwidth=&736& data-rawheight=&429& class=&origin_image zh-lightbox-thumb& width=&736& data-original=&/v2-dffcab0bfd971_r.jpg&&&/figure&&p&&br&&/p&&p&&b&三、NFC 模拟器&/b&&/p&&p&&a href=&/?target=https%3A///s/1cCpJjC& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Card_Emulator.apk&i class=&icon-external&&&/i&&/a&&/p&&p&&br&&/p&&p&安装软件之后,打开手机NFC,点击打开读卡模式,&/p&&p&&br&&/p&&figure&&img src=&/v2-cebfbd9a762c7fe_b.jpg& data-caption=&& data-rawwidth=&1080& data-rawheight=&1920& class=&origin_image zh-lightbox-thumb& width=&1080& data-original=&/v2-cebfbd9a762c7fe_r.jpg&&&/figure&&p&&br&&/p&&p&将门禁卡放在手机的NFC的位置上,mate8的NFC在下图的位置:&/p&&figure&&img src=&/v2-ac2f869d0efcbb6d719fe12ebf61b366_b.jpg& data-caption=&& data-rawwidth=&467& data-rawheight=&292& class=&origin_image zh-lightbox-thumb& width=&467& data-original=&/v2-ac2f869d0efcbb6d719fe12ebf61b366_r.jpg&&&/figure&&p&注意不要带手机壳,读卡成功后备注这张卡,&/p&&figure&&img src=&/v2-da2d_b.jpg& data-caption=&& data-rawwidth=&1080& data-rawheight=&1920& class=&origin_image zh-lightbox-thumb& width=&1080& data-original=&/v2-da2d_r.jpg&&&/figure&&p&&br&&/p&&p&使用时需要点亮屏幕。&/p&&p&&br&&/p&&p&&b&四、效果检验&/b&&/p&&p&&br&&/p&&a class=&video-box& href=&/?target=https%3A///video/585600& target=&_blank& data-video-id=&& data-video-playable=&true& data-name=&& data-poster=&/80/v2-9f52c3a46e69fdf55b31_b.jpg& data-lens-id=&585600&&
&img class=&thumbnail& src=&/80/v2-9f52c3a46e69fdf55b31_b.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&/video/585600&/span&
&p&&br&&/p&&p&&b&谢谢!&/b&&/p&&p&&b&如果有其他问题需要交流的话欢迎私信或者email(shanewa&a class=&member_mention& href=&/people/9f9beb05e254a& data-hash=&9f9beb05e254a& data-hovercard=&p$b$9f9beb05e254a&&@qq.com&/a& )。&/b&&/p&
第一次在知乎上记录Procedure,也分享下自己跳进去的坑。本Procedure中用的手机是华为Mate8,其他手机的ROOT步骤请自行百度。 一、ROOT手机1.解锁手机(会格式化手机,注意备份资料)(1)设置-&云服务, 打开之后要等两周之后,去EMUI官网上获取解锁码。序…
&p&&b&1、在线编程练习:&/b&&/p&&ul&&li&&a href=&///?target=http%3A///zh-cn/problem/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&LintCode &i class=&icon-external&&&/i&&/a&——在线刷题网站,阶梯式训练,可帮助你更快速深入地了解各类面试题型,提供专业导师写的最优代码作为参考&/li&&li&(&a href=&///?target=http%3A///solutions& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Lintcode 标准答案查询&i class=&icon-external&&&/i&&/a&——lintcode 的参考答案网站,提供最优解)&/li&&li&&a href=&///?target=https%3A//& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Codecademy&i class=&icon-external&&&/i&&/a&——包含在线编程练习和课程视频&/li&&li&&a href=&///?target=https%3A//& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&CodeHS&i class=&icon-external&&&/i&&/a&——包含数据结构、游戏设计、动画类编程题&/li&&li&&a href=&///?target=https%3A//& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Codechef&i class=&icon-external&&&/i&&/a&——题目难度从入门、简单、中等到挑战都有,会举办竞赛,获胜者会有奖金&/li&&li&&a href=&///?target=https%3A//& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Programming Praxis&i class=&icon-external&&&/i&&/a&——此网站编程练习不保存分数、不排名、不竞赛&/li&&li&&a href=&///?target=https%3A//projecteuler.net& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Project Euler&i class=&icon-external&&&/i&&/a&——有590道题,会显示难度水平和提交完成率&/li&&li&&a href=&///?target=https%3A//& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Topcoder&i class=&icon-external&&&/i&&/a&——全球性的大型开发社区,可在线编程测评&/li&&li&&a href=&///?target=https%3A///zh/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&HackerEarth&i class=&icon-external&&&/i&&/a&——注册帐号后可参与编程练习(有内推到知名企业的机会)&/li&&/ul&&p&其他细分:&/p&&p&&b&针对初学者:&/b&&/p&&ul&&li&&a href=&///?target=https%3A//& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Reddit&i class=&icon-external&&&/i&&/a&——包含有趣的编程挑战题,即使不会写,也可以查看他人的解决方法&/li&&li&&a href=&///?target=http%3A//& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Programming by Doing&i class=&icon-external&&&/i&&/a&——对于零基础的初学者,是很好的选择&/li&&li&&a href=&///?target=http%3A//& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&CodeAbbey&i class=&icon-external&&&/i&&/a&——从最简单的开始,题目难度不断增加&/li&&li&&a href=&///?target=http%3A//rosettacode.org/wiki/Rosetta_Code& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Rosetta Code&i class=&icon-external&&&/i&&/a&——包含大量的小程序&/li&&li&&a href=&///?target=https%3A//www.nayuki.io& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Project Nayuki&i class=&icon-external&&&/i&&/a&——包含很多小型挑战题&/li&&/ul&&p&&b&想要做项目却没有好点子:&/b&&/p&&ul&&li&&a href=&///?target=http%3A//dreamincode.net& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Dreamincode&i class=&icon-external&&&/i&&/a&——提供从初级到中级大约125个项目ideas&/li&&li&&a href=&///?target=https%3A//& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Github&i class=&icon-external&&&/i&&/a&——可以审查代码、管理项目,与数百万用户一起开发软件。&/li&&/ul&&p&&b&编程竞赛:&/b&&/p&&ul&&li&&a href=&///?target=https%3A//& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&HackerRank&i class=&icon-external&&&/i&&/a&——包含编程题和项目开发挑战&/li&&li&&a href=&///?target=https%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Codechef&i class=&icon-external&&&/i&&/a&——包含编程竞赛、在线程序设计挑战&/li&&li&&a href=&///?target=https%3A//& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Techgig&i class=&icon-external&&&/i&&/a&——提供新闻、直播课、在线判题系统和企业招聘信息&/li&&li&&a href=&///?target=https%3A//& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Topcoder&i class=&icon-external&&&/i&&/a&——通过众包提供更便捷的业务(包含上百万的设计和技术专家)&/li&&li&&a href=&///?target=http%3A//& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Sphere Online Judge (SPOJ)&i class=&icon-external&&&/i&&/a&——在线判题系统,会根据提交的正确率进行排名,遇到问题可以在讨论区交流&/li&&/ul&&p&&b&可共享代码:&/b&&/p&&ul&&li&&a href=&///?target=http%3A//& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Ideone&i class=&icon-external&&&/i&&/a&——在线编译器,可运行,可查看代码示例&/li&&/ul&&p&&br&&/p&&p&&b&2、教程类:(大型开放式网络课程或者文字教程)&/b&&/p&&ul&&li&&a href=&///?target=http%3A//& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&九章算法&i class=&icon-external&&&/i&&/a&——专业的程序员IT教育培训,由硅谷工程师主讲,已帮助数万人找到好工作。&/li&&li&&a href=&///?target=http%3A//& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Codeschool&i class=&icon-external&&&/i&&/a&——有经验的开发人员的交互式学习平台。&/li&&li&&a href=&///?target=http%3A//& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Udemy&i class=&icon-external&&&/i&&/a&——全球性的在线学习平台,可以从45000多个专家导师的视频中学习技能,实现自己的学习目标。&/li&&li&&a href=&///?target=http%3A//www.geeksforgeeks.org& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Geeksforgeeks&i class=&icon-external&&&/i&&/a&——提供很多问题的优质解答&/li&&li&&a href=&///?target=http%3A//& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Codeavengers&i class=&icon-external&&&/i&&/a&——提供HTML5、CSS3、Javascript的课程&/li&&li&&a href=&///?target=http%3A//& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Teamtreehouse&i class=&icon-external&&&/i&&/a&——课程具有导向作用,对于新手程序员有很完备的课程计划和训练课程&/li&&li&&a href=&///?target=http%3A//& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Hiredintech&i class=&icon-external&&&/i&&/a& ——提供有关系统设计、面试策略、软技能等内容的课程&/li&&li&&a href=&///?target=http%3A//www.& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Newest Tutorials&i class=&icon-external&&&/i&&/a&——包含大量css、HTML、Java、PHP、Flash等相关知识的教程。&/li&&li&&a href=&///?target=https%3A//www.edx.org& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Edx&i class=&icon-external&&&/i&&/a&——上千个课程(包含系统设计、Android开发、Python等课程)&/li&&li&&a href=&///?target=http%3A//web.mit.edu& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&The Massachusetts Institute of Technology (MIT)&i class=&icon-external&&&/i&&/a&——计算机科学技术、编程导论等知识的介绍&/li&&/ul&&p&&br&&/p&&p&&b&3、编程技巧类:&/b&&/p&&ul&&li&&a href=&///?target=http%3A//& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Tutorialspoint&i class=&icon-external&&&/i&&/a&——这是一个数字图书馆,你可以借助 -事例、视频等来学习任何软件技术。&/li&&li&&a href=&///?target=http%3A//& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Freecodecamp&i class=&icon-external&&&/i&&/a&——帮助你完成编程挑战、做项目并获得证书。&/li&&li&&a href=&///?target=http%3A//& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&——可以学习所有热门web技术的网站。&/li&&li&&a href=&///?target=http%3A//& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Venturebeat&i class=&icon-external&&&/i&&/a&——提供创新视角,进行开创性的研究,帮助技术爱好者作出明智的决定。&/li&&li&&a href=&///?target=http%3A//& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Norvig&i class=&icon-external&&&/i&&/a&——自学编程,经历超过十年的程序员的总结&/li&&li&&a href=&///?target=http%3A//& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Sixrevisions&i class=&icon-external&&&/i&&/a&——包含css、Javascript、HTML、Web Design等热门技术的技巧介绍&/li&&li&&a href=&///?target=http%3A///index.jsp& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Artima&i class=&icon-external&&&/i&&/a&——包含编程技巧的文章、科技新闻等&/li&&li&&a href=&///?target=https%3A//& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Kevin London's blog&i class=&icon-external&&&/i&&/a&——Kevin London的博客,通过代码事例来讲解技巧&/li&&/ul&&p&&b&编程风格:&/b&&/p&&ul&&li&&a href=&///?target=https%3A///google& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Google&i class=&icon-external&&&/i&&/a&——C++代码风格指导&/li&&li&&a href=&///?target=https%3A///r/learnprogramming/comments/1i4ds4/what_are_some_bad_coding_habits_you_would/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&What are some bad coding habits you would recommend a beginner avoid getting into? &i class=&icon-external&&&/i&&/a&——程序员应避免的不良编程习惯介绍&/li&&li&&a href=&///?target=https%3A///r/C_Programming/comments/1vuubw/good_c_programming_habits/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Good C programming habits. &i class=&icon-external&&&/i&&/a&——好的编程习惯介绍&/li&&li&&a href=&///?target=http%3A//umich.edu/%7Eeecs381/generalFAQ/Debugging.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Debugging&i class=&icon-external&&&/i&&/a&——介绍程序调试时的常见问题&/li&&li&&a href=&///?target=http%3A//& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&&i class=&icon-external&&&/i&&/a&——教你如何写出更优代码&/li&&/ul&&p&&b&编程语言:&/b&(JAVA)&/p&&ul&&li&&a href=&///?target=http%3A///java/index.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Java Corner &i class=&icon-external&&&/i&&/a&——包含java题和答案、相关新闻&/li&&li&&a href=&///?target=https%3A//netbeans.org& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&NetBeans&i class=&icon-external&&&/i&&/a&——提供开源代码、软件,帮助你更快速地学习软件、应用开发&/li&&li&&a href=&///?target=http%3A//& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&XyzWS&i class=&icon-external&&&/i&&/a&——包含大量java面试题&/li&&li&&a href=&///?target=http%3A//& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&JavaWorld&i class=&icon-external&&&/i&&/a&——包含java知识、编程技巧、开源代码开发项目&/li&&/ul&&p&&br&&/p&&p&&b&4、社区类:&/b& &/p&&ul&&li&&a href=&///?target=https%3A//& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Quora&i class=&icon-external&&&/i&&/a&——问答形式的网站,各种各样的问题都能得到来自不同网友的解答(美国版的知乎)。&/li&&li&&a href=&///?target=http%3A//& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Stackoverflow&i class=&icon-external&&&/i&&/a&——在线学习社区,可关注感兴趣的话题&/li&&li&&a href=&///?target=https%3A//& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Careercup&i class=&icon-external&&&/i&&/a&——含编程题、面试建议、招聘信息等&/li&&li&&a href=&///?target=https%3A//& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Github&i class=&icon-external&&&/i&&/a&——可以审查代码、管理项目,与数百万用户一起开发软件。(含开源代码)&/li&&li&&a href=&///?target=https%3A//& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Reddit&i class=&icon-external&&&/i&&/a&——热门社区,用户很多,提问能得到很多留言回复&/li&&/ul&&p&&br&&/p&&p&&b&5、新闻类:&/b&&/p&&ul&&li&&a href=&///?target=http%3A//& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Thenextweb&i class=&icon-external&&&/i&&/a&——可获取各种技术相关的新闻&/li&&li&&a href=&///?target=http%3A//& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Y Combinator&i class=&icon-external&&&/i&&/a&——可以订阅邮件,会将最新消息(新闻)直接发送至你的邮箱&/li&&li&&a href=&///?target=https%3A//& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Ars Technica&i class=&icon-external&&&/i&&/a&——此网站发表的文章角度独特并且内容质量很高&/li&&li&&a href=&///?target=http%3A//acm.org& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&acm.org&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&——新闻交流社区&/li&&li&&a href=&///?target=https%3A//lobste.rs& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Lobsters&i class=&icon-external&&&/i&&/a&——近期热点新闻&/li&&li&&a href=&///?target=https%3A//& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&TechCrunch&i class=&icon-external&&&/i&&/a&——获取技术类新闻的另一个好的网站&/li&&li&&a href=&///?target=http%3A//& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&GSMArena&i class=&icon-external&&&/i&&/a&——可获取最新的关于手机、android的新闻&/li&&/ul&&p&&br&&/p&&p&&b&6、面试相关:&/b&&/p&&ul&&li&&a href=&///?target=http%3A///zh-cn/problem/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&LintCode &i class=&icon-external&&&/i&&/a&——在线刷题网站,有ladder、note、代码风格检测等功能,分门别类、由简单到难&/li&&li&&a href=&///?target=http%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&九章算法&i class=&icon-external&&&/i&&/a&——提供最专业的程序员面试指导&/li&&li&&a href=&///?target=https%3A//& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Interview Bit&i class=&icon-external&&&/i&&/a&——可以根据你的兴趣和能力匹配出相应的IT公司,并建立联系,帮助你做好所需准备,得到你想要的工作。&/li&&li&&a href=&///?target=http%3A//www.geeksforgeeks.org/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Geeksforgeeks&i class=&icon-external&&&/i&&/a&——提供很多问题的优质解答&/li&&li&&a href=&///?target=https%3A//techinterview.org& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Tech Interview&i class=&icon-external&&&/i&&/a&——包含很多让你用脑思考的东西(面试题、测试题、难度题)&/li&&li&&a href=&///?target=https%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Reddit&i class=&icon-external&&&/i&&/a&——包含有趣的编程挑战题和技术面试指南&/li&&li&&a href=&///?target=http%3A//kelukelu.me& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&KeLuKeLu&i class=&icon-external&&&/i&&/a&——包含面试准备、面试题、面试技巧等内容&/li&&li&&a href=&///?target=https%3A//& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Palantir&i class=&icon-external&&&/i&&/a&——教你如何应对算法面试,提高通过率&/li&&li&&a href=&///?target=https%3A//visualgo.net/en& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Visualgo&i class=&icon-external&&&/i&&/a&——通过动画演示数据结构、算法等知识&/li&&li&&a href=&///?target=https%3A///blog/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Snail in a Turtleneck&i class=&icon-external&&&/i&&/a&——技术面试指南&/li&&li&&a href=&///?target=https%3A//& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&LeetCode&i class=&icon-external&&&/i&&/a&——在线刷题网站,在线编程刷题、在线判题&/li&&li&&a href=&///?target=https%3A//& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Lifehacker&i class=&icon-external&&&/i&&/a&——有关求职面试的新闻、视频、八卦&/li&&li&&a href=&///?target=https%3A///job-interview-questions-and-answers-2061204& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&The balance&i class=&icon-external&&&/i&&/a&——各种面试时会问到的问题及其回答技巧&/li&&li&&a href=&///?target=http%3A//www.cmi.ac.in& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Chennai Mathematical Institute&i class=&icon-external&&&/i&&/a&——包含很多编程相关的概念问题&/li&&/ul&&p&&br&&/p&&p&&b&7、开发者博客:&/b&&/p&&ul&&li&&a href=&///?target=https%3A//& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Coding Horror&i class=&icon-external&&&/i&&/a&——优秀程序员的博客(分享自己的经历)&/li&&li&&a href=&///?target=http%3A//& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Clean Coder Blog&i class=&icon-external&&&/i&&/a&——《Clean code》作者的博客&/li&&li&&a href=&///?target=https%3A//& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Joel on Software&i class=&icon-external&&&/i&&/a&——博主写了上千篇关于软件开发、管理、互联网相关的文章&/li&&li&&a href=&///?target=http%3A//& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Programming in the 21st Century&i class=&icon-external&&&/i&&/a&——博主的几百篇文章谈论编程、设计灵感、代码创造性等问&/li&&li&&a href=&///?target=http%3A//& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Blog About Computers&i class=&icon-external&&&/i&&/a&——一位编程开发者的博客&/li&&li&&a href=&///?target=https%3A//& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Stephen Haunts { Coding in the Trenches }&i class=&icon-external&&&/i&&/a&——一位有经验的软件开发者写的关于软件开发、企业构架、领导管理等内容的博客&/li&&li&&a href=&///?target=https%3A//& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Stories about Software&i class=&icon-external&&&/i&&/a&——有很多关于“软件”的故事&/li&&li&&a href=&///?target=http%3A//& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Coding Geek - A blog about IT, programming and Java&i class=&icon-external&&&/i&&/a&——编程技术怪才的博客(包含很多java相关的东西)&/li&&li&&a href=&///?target=http%3A//& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&——有关ACM竞赛题及其参考代码&/li&&/ul&&p&&br&&/p&&p&&b&8、机器学习相关:&/b& &/p&&ul&&li&&a href=&///?target=http%3A//mark.reid.name/blog/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Mark Reid&i class=&icon-external&&&/i&&/a&——一位研究机器学习多年的博主,从2007年至今,写了无数篇帖子,机器学习入门者可以从他最热门的帖子开始学习。&/li&&li&&a href=&///?target=https%3A//& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&hal&i class=&icon-external&&&/i&&/a&——博主对机器学习、计算机语言等有一定研究&/li&&li&&a href=&///?target=https%3A//& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Neal Richter&i class=&icon-external&&&/i&&/a&——博主在博客中“浅谈人工智能、机器学习、搜索引擎……”&/li&&li&&a href=&///?target=http%3A//www.earningmyturns.org& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Fernando Pereira&i class=&icon-external&&&/i&&/a&——大牛级人物的博客,对机器学习、计算机语言学等领域有深入研究,但是博客很多年没有更新&/li&&li&&a href=&///?target=https%3A//& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Yisong Yue&i class=&icon-external&&&/i&&/a&——博主是加州理工学院机器学习研究员,发表与机器学习有关的理论和实践的帖子&/li&&li&&a href=&///?target=http%3A//blog.mikiobraun.de& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Marginally Interesting&i class=&icon-external&&&/i&&/a&——发表了有关机器学习、计算机科学等的帖子&/li&&/ul&&p&&br&&/p&&p&&b&9、有趣的视频 or 网站:&/b&&/p&&ul&&li&&a href=&///?target=https%3A//& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&The Verge&i class=&icon-external&&&/i&&/a&——包含各种有趣&/li&&li&维开创了新的产业&/li&&/ul&&p&&br&&/p&&p&&b&10、提升英语水平:&/b&&/p&&ul&&li&&a href=&///?target=https%3A///shared/english/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Quia - English&i class=&icon-external&&&/i&&/a&——在线英语题测试&/li&&li&&a href=&///?target=http%3A///english_rules.asp& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&GrammarBook&i class=&icon-external&&&/i&&/a&——英语用法规则的文章&视频&/li&&li&&a href=&///?target=http%3A//mnet.edu/grammar/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Guide to Grammar and Writing&i class=&icon-external&&&/i&&/a&——提供专业老师写的语法指南、写作指南&/li&&li&&a href=&///?target=https%3A//owl.english.purdue.edu& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&the Purdue University Online Writing Lab (OWL)&i class=&icon-external&&&/i&&/a&——学习英语的建议&/li&&li&&a href=&///?target=https%3A///learn-english.htm& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Learn English | EnglishClub&i class=&icon-external&&&/i&&/a&——英语游戏、语法课程、使用技巧等&/li&&/ul&&p&&br&&/p&&p&&b&11、电脑相关书籍:&/b&&/p&&ul&&li&&a href=&///?target=http%3A//& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&IT eBooks&i class=&icon-external&&&/i&&/a&——大型电子图书馆,可即时免费下载书籍&/li&&li&&a href=&///?target=https%3A///EbookFoundation/free-programming-books& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&EbookFoundation/free-programming-books&i class=&icon-external&&&/i&&/a&——包含计算机相关的所有知识的书籍(多种语言),可下载&/li&&li&&a href=&///?target=http%3A//& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Science Books Online&i class=&icon-external&&&/i&&/a&——大约150本计算机相关免费书籍&/li&&li&&a href=&///?target=http%3A//gatecse.in/best-books-for-gatecse/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Best Books for GATE CSE&i class=&icon-external&&&/i&&/a&——包含很多计算机相关书籍,可以免费下载&/li&&/ul&&p&&br&&/p&&p&&b&12、看牛人写代码:&/b&&/p&&ul&&li&&a href=&///?target=https%3A//www.liveedu.tv& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&LiveEdu.tv&i class=&icon-external&&&/i&&/a&——可以观看牛人编写网站、游戏等应用程序的代码录像&/li&&/ul&&p&&br&&/p&&p&&b&13、各大IT公司的技术博客&/b&&/p&&ul&&li&&a href=&///?target=https%3A///airbnb-engineering& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Airbnb&i class=&icon-external&&&/i&&/a&&/li&&li&&a href=&///?target=http%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Amazon&i class=&icon-external&&&/i&&/a&&/li&&li&&a href=&///?target=http%3A///blog/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Cloudera&i class=&icon-external&&&/i&&/a&&/li&&li&&a href=&///?target=https%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Dropbox&i class=&icon-external&&&/i&&/a&&/li&&li&&a href=&///?target=https%3A///blog/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Facebook&i class=&icon-external&&&/i&&/a&&/li&&li&&a href=&///?target=http%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&FourSquare&i class=&icon-external&&&/i&&/a&&/li&&li&&a href=&///?target=https%3A///blog/category/engineering& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Github&i class=&icon-external&&&/i&&/a&&/li&&li&&a href=&///?target=https%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Groupon&i class=&icon-external&&&/i&&/a&&/li&&li&&a href=&///?target=http%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Google&i class=&icon-external&&&/i&&/a&&/li&&li&&a href=&///?target=http%3A///blog& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Linkedin&i class=&icon-external&&&/i&&/a&&/li&&li&&a href=&///?target=http%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Netflix&i class=&icon-external&&&/i&&/a&&/li&&li&&a href=&///?target=http%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Quora&i class=&icon-external&&&/i&&/a&&/li&&li&&a href=&///?target=http%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Square&i class=&icon-external&&&/i&&/a&&/li&&li&&a href=&///?target=http%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Twitter&i class=&icon-external&&&/i&&/a&&/li&&li&&a href=&///?target=http%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Yelp&i class=&icon-external&&&/i&&/a&&/li&&/ul&&p&&br&&/p&&p&&b&欢迎关注我的微信公众号:九章算法(ninechapter),帮助你了解IT技术前沿,通过面试、拿到offer、找到好工作&/b&!&/p&
1、在线编程练习:——在线刷题网站,阶梯式训练,可帮助你更快速深入地了解各类面试题型,提供专业导师写的最优代码作为参考(——lintcode 的参考答案网站,提供最优解)——包含在线编程练习和课程视频—…
&figure&&img src=&/v2-ec222ed4ab_b.jpg& data-rawwidth=&1374& data-rawheight=&618& class=&origin_image zh-lightbox-thumb& width=&1374& data-original=&/v2-ec222ed4ab_r.jpg&&&/figure&&p&近来知乎上如雨后春笋般冒出了大把大把的爬虫教程。这是好事,学了 Python 基础的同学们可以很轻松地搜出许多练手的例子。不过我不是针对谁,我是说网上绝大多数的爬虫教程,其实都缺乏可操作性。&/p&&p&是的,也包括我自己写过的。&/p&&p&主要原因有两点:&/p&&ol&&li&教程是死的,网站是活的。页面会改版,接口会更新。一个爬虫教程的案例三个月之后还能有效已经是万幸了。比如我自己教程里的查天气案例,接口改动过很多次,数据也早就不更新。但发出去的文章被转发几次后就很难再维护更新了。我也只能在自己的论坛上发布更新消息和问题答疑:&a href=&/?target=http%3A///forum.php%3Fmod%3Dviewthread%26tid%3D8& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&【Python 第43课】 查天气(1)&i class=&icon-external&&&/i&&/a&。&/li&&li&但凡数据比较有价值的网站,一定都会有反爬措施,既是对数据的保护,也是避免机器流量干扰到正常用户的体验。所以光是写个网络请求,几乎不可能成功拿到数据。反爬措施千千万,应对反爬的手段万万千,这就是个不停斗智斗勇的过程,不存在一个教程就教会的万金油方法。&/li&&/ol&&p&反爬里面最常见的一种手段就是,判断你的请求频率。如果你短时间内发送了大量的请求,甭管你是不是人,先封你账号或 IP 一段时间再说。所以,这就成了一个矛盾的地方:爬得太快会被封,爬得太慢又很耗时间。一般教程也许会说句:想要提升抓取效率并且降低被封的风险,可以使用代理 IP。然而这话说着倒轻松,网上免费的代理 IP 也不少,但每次找来能用的却没几个。总不至于每次为了写点小练习还去花钱买很多付费代理吧。况且现如今你真要买,也还未必能顺利买到可用的。&br&&/p&&p&于是我们决定自己动手,一劳永逸地解决这个老大难问题:&b&实现一个自动获取可用代理 IP 的接口&/b&。&/p&&p&基本思路还是从网上的几大免费平台获取 IP 地址,不同的是我们定期去检测 IP 的可用性。在调用接口时,提供可用性最高的 IP 地址列表。&/p&&p&网页上列出了几十个最新的推荐 IP,只是临时找几个做测试,可直接访问查看。&/p&&p&网页地址:&a href=&/?target=http%3A///proxy/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&/pro&/span&&span class=&invisible&&xy/&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&API 接口地址:&a href=&/?target=http%3A///proxy/get/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&/pro&/span&&span class=&invisible&&xy/get/&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&请求方法:GET&/p&&p&频率限制:不高于3秒1次&/p&&p&请求示例:&/p&&p&&i&获取 5 个 IP&/i&&/p&&p&&a href=&/?target=http%3A///proxy/get/%3Fnum%3D5& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&/pro&/span&&span class=&invisible&&xy/get/?num=5&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&&i&获取 5 个 HTTPS 的 IP&/i&&/p&&p&&a href=&/?target=http%3A///proxy/get/%3Fnum%3D5%26head%3Dhttps& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&/pro&/span&&span class=&invisible&&xy/get/?num=5&head=https&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&返回结果示例:&/p&&div class=&highlight&&&pre&&code class=&language-json&&&span&&/span&&span class=&p&&{&/span&
&span class=&nt&&&proxies&&/span&&span class=&p&&:&/span& &span class=&p&&[&/span&
&span class=&p&&{&/span&
&span class=&nt&&&http&&/span&&span class=&p&&:&/span& &span class=&s2&&&117.90.0.225:9000&&/span&
&span class=&p&&},&/span&
&span class=&p&&{&/span&
&span class=&nt&&&http&&/span&&span class=&p&&:&/span& &span class=&s2&&&186.154.146.26:8080&&/span&
&span class=&p&&},&/span&
&span class=&p&&{&/span&
&span class=&nt&&&http&&/span&&span class=&p&&:&/span& &span class=&s2&&&175.155.25.27:808&&/span&
&span class=&p&&},&/span&
&span class=&p&&{&/span&
&span class=&nt&&&http&&/span&&span class=&p&&:&/span& &span class=&s2&&&124.88.67.52:843&&/span&
&span class=&p&&},&/span&
&span class=&p&&{&/span&
&span class=&nt&&&http&&/span&&span class=&p&&:&/span& &span class=&s2&&&119.5.0.7:808&&/span&
&span class=&p&&}&/span&
&span class=&p&&],&/span&
&span class=&nt&&&code&&/span&&span class=&p&&:&/span& &span class=&mi&&1&/span&
&span class=&p&&}&/span&
&/code&&/pre&&/div&&p&于是,在你做爬虫练习时,只要通过接口获取几个 IP,作为你请求的 proxy,即可大大提高抓取的效率。目前我们自己的爬虫项目都在使用此接口。&/p&&p&不过仍然要说明,即使经过多次验证,也无法保证一个 IP 的绝对可用性。不同时间不同地域不同网络都有可能导致请求超时或失效。所以你的代码中也还是需要自己做好相应的异常处理。这是个概率问题,工具的作用只是尽可能提高概率。&/p&&p&我们不生产 IP,我们只是互联网的搬运工。&/p&&p&完整的接口参数说明,以及项目的源代码,可在公众号(Crossin的编程教室)后台回复 &b&IP&/b& 获取。&/p&&p&&br&&/p&&p&════&br&&/p&&p&&i&其他文章及回答:&/i&&/p&&blockquote&&a href=&/p/& class=&internal&&喏,你们要的 PyCharm 快速上手指南&/a& &br&&a href=&/p/& class=&internal&&编程新手:看懂很多示例,却依然写不好一个程序&/a&&br&&a href=&/p/& class=&internal&&给伸手党的福利:Python 新手入门引导&/a& &br&&a href=&/p/& class=&internal&&如何用100行Python代码做出魔性声控游戏“八分音符酱”&/a& &br&&a href=&/question//answer/& class=&internal&&学习编程的过程中可能会走哪些弯路,有哪些经验可以参考?&/a& &br&&a href=&/question//answer/& class=&internal&&你是如何自学 Python 的?&/a&&/blockquote&&p&Crossin的编程教室&/p&&blockquote&微信公众号ID:crossincode&br&网站:&a href=&/?target=http%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&&i class=&icon-external&&&/i&&/a&&br&QQ群:&br&微信加群:crossin123(新手/进阶/爬虫)&/blockquote&&figure&&img src=&/5b58c0ecafdc5d85c857_b.jpg& data-rawwidth=&258& data-rawheight=&258& class=&content_image& width=&258&&&/figure&&p&&/p&
近来知乎上如雨后春笋般冒出了大把大把的爬虫教程。这是好事,学了 Python 基础的同学们可以很轻松地搜出许多练手的例子。不过我不是针对谁,我是说网上绝大多数的爬虫教程,其实都缺乏可操作性。是的,也包括我自己写过的。主要原因有两点:教程是死的,网…
&figure&&img src=&/v2-d52fd28cba129_b.jpg& data-rawwidth=&600& data-rawheight=&300& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&/v2-d52fd28cba129_r.jpg&&&/figure&&p&&/p&&blockquote&&i&好久没更新了,我才不会 告诉你们我沉迷django开发了&/i& &i&
话说昨在知乎上看到了这个:&/i& &i&&a href=&/p/& class=&internal&&两把王者荣耀的时间,学会Python爬虫&/a&&/i& &i&
想想自己也有好长时间没有写爬虫了,就去听了一波,&/i& &i&
顺便吧这个功能增加到自己的公众号里。&/i& &i&
实验楼的代码君小哥哥貌似是第一次直播,还有点小紧张呢!&/i&&/blockquote&&h2&先看一下效果图:&/h2&&p&&br&&/p&&figure&&img src=&/v2-7bc18ae48d9b4f2baddce_b.png& data-rawwidth=&750& data-rawheight=&1334& class=&origin_image zh-lightbox-thumb& width=&750& data-original=&/v2-7bc18ae48d9b4f2baddce_r.png&&&/figure&&p&&br&&/p&&figure&&img src=&/v2-66b7c74cbdc51cca0a1a4_b.png& data-rawwidth=&750& data-rawheight=&1334& class=&origin_image zh-lightbox-thumb& width=&750& data-original=&/v2-66b7c74cbdc51cca0a1a4_r.png&&&/figure&&p&&br&&/p&&p&说一下实现的原理:&/p&&p&其实非常简单,主要是调用了 12306的查询接口,得到返回数据后,再格式化输出&/p&&p&步骤如下:&/p&&ul&&li&寻找查询接口&/li&&li&理解接口的调用&/li&&li&找到调用时的城市名代码&/li&&li&编写脚本调用接口(返回的是json格式的数据)&/li&&li&格式画数据后接入公众号&/li&&/ul&&h2&代码的实现:&/h2&&p&&b&调用接口时需要的城市代码字典&/b&&/p&&div class=&highlight&&&pre&&code class=&language-python3&&&span&&/span&&span class=&sd&&'''&/span&
&span class=&sd&&获取12306城市名和城市代码的数据&/span&
&span class=&sd&&文件名: parse_station.py&/span&
&span class=&sd&&'''&/span&
&span class=&kn&&import&/span& &span class=&nn&&requests&/span&
&span class=&kn&&import&/span& &span class=&nn&&re&/span&
&span class=&c1&&#关闭https证书验证警告&/span&
&span class=&n&&requests&/span&&span class=&o&&.&/span&&span class=&n&&packages&/span&&span class=&o&&.&/span&&span class=&n&&urllib3&/span&&span class=&o&&.&/span&&span class=&n&&disable_warnings&/span&&span class=&p&&()&/span&
&span class=&c1&&# 12306的城市名和城市代码js文件url&/span&
&span class=&n&&url&/span& &span class=&o&&=&/span& &span class=&s1&&'/otn/resources/js/framework/station_name.js?station_version=1.9018'&/span&
&span class=&n&&r&/span& &span class=&o&&=&/span& &span class=&n&&requests&/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=&n&&verify&/span&&span class=&o&&=&/span&&span class=&kc&&False&/span&&span class=&p&&)&/span&
&span class=&n&&pattern&/span& &span class=&o&&=&/span& &span class=&s1&&u'([&/span&&span class=&se&&\u4e00&/span&&span class=&s1&&-&/span&&span class=&se&&\u9fa5&/span&&span class=&s1&&]+)\|([A-Z]+)'&/span&
&span class=&n&&result&/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=&n&&pattern&/span&&span class=&p&&,&/span&&span class=&n&&r&/span&&span class=&o&&.&/span&&span class=&n&&text&/span&&span class=&p&&)&/span&
&span class=&n&&station&/span& &span class=&o&&=&/span& &span class=&nb&&dict&/span&&span class=&p&&(&/span&&span class=&n&&result&/span&&span class=&p&&)&/span&
&span class=&nb&&print&/span&&span class=&p&&(&/span&&span class=&n&&station&/span&&span class=&p&&)&/span&
&/code&&/pre&&/div&&p&&b&接着将字典保存在文件中:&/b& &/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&在终端输入: python3 parse_stations.py && stations.py
&/code&&/pre&&/div&&p&这样,就通过linux的导入功能,将字典文件保存在本地,方便我们一会调用&/p&&p&&br&&/p&&p&&b&调用接口,爬取信息&/b&&/p&&div class=&highlight&&&pre&&code class=&language-python3&&&span&&/span&&span class=&sd&&'''&/span&
&span class=&sd&&查询两站之间的火车票信息&/span&
&span class=&sd&&输入参数: &date& &from& &to&&/span&
&span class=&sd&&12306 api:&/span&
&span class=&sd&&'/otn/leftTicket/query?leftTicketDTO.train_date=&leftTicketDTO.from_station=NJH&leftTicketDTO.to_station=SZH&purpose_codes=ADULT'&/span&
&span class=&sd&&'''&/span&
&span class=&kn&&import&/span& &span class=&nn&&requests&/span&
&span class=&kn&&import&/span& &span class=&nn&&json&/span&
&span class=&c1&&# 关闭https证书验证警告&/span&
&span class=&n&&requests&/span&&span class=&o&&.&/span&&span class=&n&&packages&/span&&span class=&o&&.&/span&&span class=&n&&urllib3&/span&&span class=&o&&.&/span&&span class=&n&&disable_warnings&/span&&span class=&p&&()&/span&
&span class=&c1&&# 城市名代码查询字典&/span&
&span class=&c1&&# key:城市名 value:城市代码&/span&
&span class=&kn&&from&/span& &span class=&nn&&.stations&/span& &span class=&k&&import&/span& &span class=&n&&stations_dict&/span&
&span class=&c1&&# 反转k,v形成新的字典&/span&
&span class=&n&&code_dict&/span& &span class=&o&&=&/span& &span class=&p&&{&/span&&span class=&n&&v&/span&&span class=&p&&:&/span& &span class=&n&&k&/span& &span class=&k&&for&/span& &span class=&n&&k&/span&&span class=&p&&,&/span& &span class=&n&&v&/span& &span class=&ow&&in&/span& &span class=&n&&stations_dict&/span&&span class=&o&&.&/span&&span class=&n&&items&/span&&span class=&p&&()}&/span&
&span class=&k&&def&/span& &span class=&nf&&get_query_url&/span&&span class=&p&&(&/span&&span class=&n&&text&/span&&span class=&p&&):&/span&
&span class=&sd&&'''&/span&
&span class=&sd&&
返回调用api的url链接&/span&
&span class=&sd&&
'''&/span&
&span class=&c1&&# 解析参数 aggs[0]里是固定字符串:车票查询 用于匹配公众号接口&/span&
&span class=&n&&args&/span& &span class=&o&&=&/span& &span class=&nb&&str&/span&&span class=&p&&(&/span&&span class=&n&&text&/span&&span class=&p&&)&/span&&span class=&o&&.&/span&&span class=&n&&split&/span&&span class=&p&&(&/span&&span class=&s1&&' '&/span&&span class=&p&&)&/span&
&span class=&k&&try&/span&&span class=&p&&:&/span&
&span class=&n&&date&/span& &span class=&o&&=&/span& &span class=&n&&args&/span&&span class=&p&&[&/span&&span class=&mi&&1&/span&&span class=&p&&]&/span&
&span class=&n&&from_station_name&/span& &span class=&o&&=&/span& &span class=&n&&args&/span&&span class=&p&&[&/span&&span class=&mi&&2&/span&&span class=&p&&]&/span&
&span class=&n&&to_station_name&/span& &span class=&o&&=&/span& &span class=&n&&args&/span&&span class=&p&&[&/span&&span class=&mi&&3&/span&&span class=&p&&]&/span&
&span class=&n&&from_station&/span&&span class=&o&&=&/span&&span class=&n&&stations_dict&/span&&span class=&p&&[&/span&&span class=&n&&from_station_name&/span&&span class=&p&&]&/span&
&span class=&n&&to_station&/span& &span class=&o&&=&/span& &span class=&n&&stations_dict&/span&&span class=&p&&[&/span&&span class=&n&&to_station_name&/span&&span class=&p&&]&/span&
&span class=&k&&except&/span&&span class=&p&&:&/span&
&span class=&n&&date&/span&&span class=&p&&,&/span&&span class=&n&&from_station&/span&&span class=&p&&,&/span&&span class=&n&&to_station&/span&&span class=&o&&=&/span&&span class=&s1&&'--'&/span&&span class=&p&&,&/span&&span class=&s1&&'--'&/span&&span class=&p&&,&/span&&span class=&s1&&'--'&/span&
&span class=&c1&&#将城市名转换为城市代码&/span&
&span class=&c1&&# api url 构造&/span&
&span class=&n&&url&/span& &span class=&o&&=&/span& &span class=&p&&(&/span&
&span class=&s1&&'/otn/leftTicket/query?'&/span&
&span class=&s1&&'leftTicketDTO.train_date=&/span&&span class=&si&&{}&/span&&span class=&s1&&&'&/span&
&span class=&s1&&'leftTicketDTO.from_station=&/span&&span class=&si&&{}&/span&&span class=&s1&&&'&/span&
&span class=&s1&&'leftTicketDTO.to_station=&/span&&span class=&si&&{}&/span&&span class=&s1&&&'&/span&
&span class=&s1&&'purpose_codes=ADULT'&/span&
&span class=&p&&)&/span&&span class=&o&&.&/span&&span class=&n&&format&/span&&span class=&p&&(&/span&&span class=&n&&date&/span&&span class=&p&&,&/span& &span class=&n&&from_station&/span&&span class=&p&&,&/span& &span class=&n&&to_station&/span&&span class=&p&&)&/span&
&span class=&nb&&print&/span&&span class=&p&&(&/span&&span class=&n&&url&/span&&span class=&p&&)&/span&
&span class=&k&&return&/span& &span class=&n&&url&/span&
&span class=&k&&def&/span& &span class=&nf&&query_train_info&/span&&span class=&p&&(&/span&&span class=&n&&url&/span&&span class=&p&&):&/span&
&span class=&sd&&'''&/span&
&span class=&sd&&
查询火车票信息:&/span&
&span class=&sd&&
返回 信息查询列表&/span&
&span class=&sd&&
'''&/span&
&span class=&n&&info_list&/span& &span class=&o&&=&/span& &span class=&p&&[]&/span&
&span class=&k&&try&/span&&span class=&p&&:&/span&
&span class=&n&&r&/span& &span class=&o&&=&/span& &span class=&n&&requests&/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=&n&&verify&/span&&span class=&o&&=&/span&&span class=&kc&&False&/span&&span class=&p&&)&/span&
&span class=&c1&&# 获取返回的json数据里的data字段的result结果&/span&
&span class=&n&&raw_trains&/span& &span class=&o&&=&/span& &span class=&n&&r&/span&&span class=&o&&.&/span&&span class=&n&&json&/span&&span class=&p&&()[&/span&&span class=&s1&&'data'&/span&&span class=&p&&][&/span&&span class=&s1&&'result'&/span&&span class=&p&&]&/span&
&span class=&k&&for&/span& &span class=&n&&raw_train&/span& &span class=&ow&&in&/span& &span class=&n&&raw_trains&/span&&span class=&p&&:&/span&
&span class=&c1&&# 循环遍历每辆列车的信息&/span&
&span class=&n&&data_list&/span& &span class=&o&&=&/span& &span class=&n&&raw_train&/span&&span class=&o&&.&/span&&span class=&n&&split&/span&&span class=&p&&(&/span&&span class=&s1&&'|'&/span&&span class=&p&&)&/span&
&span class=&c1&&# 车次号码&/span&
&span class=&n&&train_no&/span& &span class=&o&&=&/span& &span class=&n&&data_list&/span&&span class=&p&&[&/span&&span class=&mi&&3&/span&&span class=&p&&]&/span&
&span class=&c1&&# 出发站&/span&
&span class=&n&&from_station_code&/span& &span class=&o&&=&/span& &span class=&n&&data_list&/span&&span class=&p&&[&/span&&span class=&mi&&6&/span&&span class=&p&&]&/span&
&span class=&n&&from_station_name&/span& &span class=&o&&=&/span& &span class=&n&&code_dict&/span&&span class=&p&&[&/span&&span class=&n&&from_station_code&/span&&span class=&p&&]&/span&
&span class=&c1&&# 终点站&/span&
&span class=&n&&to_station_code&/span& &span class=&o&&=&/span& &span class=&n&&data_list&/span&&span class=&p&&[&/span&&span class=&mi&&7&/span&&span class=&p&&]&/span&
&span class=&n&&to_station_name&/span& &span class=&o&&=&/span& &span class=&n&&code_dict&/span&&span class=&p&&[&/span&&span class=&n&&to_station_code&/span&&span class=&p&&]&/span&
&span class=&c1&&# 出发时间&/span&
&span class=&n&&start_time&/span& &span class=&o&&=&/span& &span class=&n&&data_list&/span&&span class=&p&&[&/span&&span class=&mi&&8&/span&&span class=&p&&]&/span&
&span class=&c1&&# 到达时间&/span&
&span class=&n&&arrive_time&/span& &span class=&o&&=&/span& &span class=&n&&data_list&/span&&span class=&p&&[&/span&&span class=&mi&&9&/span&&span class=&p&&]&/span&
&span class=&c1&&# 总耗时&/span&
&span class=&n&&time_fucked_up&/span& &span class=&o&&=&/span& &span class=&n&&data_list&/span&&span class=&p&&[&/span&&span class=&mi&&10&/span&&span class=&p&&]&/span&
&span class=&c1&&# 一等座&/span&
&span class=&n&&first_class_seat&/span& &span class=&o&&=&/span& &span class=&n&&data_list&/span&&span class=&p&&[&/span&&span class=&mi&&31&/span&&span class=&p&&]&/span& &span class=&ow&&or&/span& &span class=&s1&&'--'&/span&
&span class=&c1&&# 二等座&/span&
&span class=&n&&second_class_seat&/span& &span class=&o&&=&/span& &span class=&n&&data_list&/span&&span class=&p&&[&/span&&span class=&mi&&30&/span&&span class=&p&&]&/span&&span class=&ow&&or&/span& &span class=&s1&&'--'&/span&
&span class=&c1&&# 软卧&/span&
&span class=&n&&soft_sleep&/span& &span class=&o&&=&/span& &span class=&n&&data_list&/span&&span class=&p&&[&/span&&span class=&mi&&23&/span&&span class=&p&&]&/span&&span class=&ow&&or&/span& &span class=&s1&&'--'&/span&
&span class=&c1&&# 硬卧&/span&
&span class=&n&&hard_sleep&/span& &span class=&o&&=&/span& &span class=&n&&data_list&/span&&span class=&p&&[&/span&&span class=&mi&&28&/span&&span class=&p&&]&/span&&span class=&ow&&or&/span& &span class=&s1&&'--'&/span&
&span class=&c1&&# 硬座&/span&
&span class=&n&&hard_seat&/span& &span class=&o&&=&/span& &span class=&n&&data_list&/span&&span class=&p&&[&/span&&span class=&mi&&29&/span&&span class=&p&&]&/span&&span class=&ow&&or&/span& &span class=&s1&&'--'&/span&
&span class=&c1&&# 无座&/span&
&span class=&n&&no_seat&/span& &span class=&o&&=&/span& &span class=&n&&data_list&/span&&span class=&p&&[&/span&&span class=&mi&&26&/span&&span class=&p&&]&/span&&span class=&ow&&or&/span& &span class=&s1&&'--'&/span&
&span class=&c1&&# 打印查询结果&/span&
&span class=&n&&info&/span& &span class=&o&&=&/span& &span class=&p&&(&/span&&span class=&s1&&'车次:&/span&&span class=&si&&{}&/span&&span class=&se&&\n&/span&&span class=&s1&&出发站:&/span&&span class=&si&&{}&/span&&span class=&se&&\n&/span&&span class=&s1&&目的地:&/span&&span class=&si&&{}&/span&&span class=&se&&\n&/span&&span class=&s1&&出发时间:&/span&&span class=&si&&{}&/span&&span class=&se&&\n&/span&&span class=&s1&&到达时间:&/span&&span class=&si&&{}&/span&&span class=&se&&\n&/span&&span class=&s1&&消耗时间:&/span&&span class=&si&&{}&/span&&span class=&se&&\n&/span&&span class=&s1&&座位情况:&/span&&span class=&se&&\n&/span&&span class=&s1&& 一等座:「&/span&&span class=&si&&{}&/span&&span class=&s1&&」 &/span&&span class=&se&&\n&/span&&span class=&s1&&二等座:「&/span&&span class=&si&&{}&/span&&span class=&s1&&」&/span&&span class=&se&&\n&/span&&span class=&s1&&软卧:「&/span&&span class=&si&&{}&/span&&span class=&s1&&」&/span&&span class=&se&&\n&/span&&span class=&s1&&硬卧:「&/span&&span class=&si&&{}&/span&&span class=&s1&&」&/span&&span class=&se&&\n&/span&&span class=&s1&&硬座:「&/span&&span class=&si&&{}&/span&&span class=&s1&&」&/span&&span class=&se&&\n&/span&&span class=&s1&&无座:「&/span&&span class=&si&&{}&/span&&span class=&s1&&」&/span&&span class=&se&&\n\n&/span&&span class=&s1&&'&/span&&span class=&o&&.&/span&&span class=&n&&format&/span&&span class=&p&&(&/span&
&span class=&n&&train_no&/span&&span class=&p&&,&/span& &span class=&n&&from_station_name&/span&&span class=&p&&,&/span& &span class=&n&&to_station_name&/span&&span class=&p&&,&/span& &span class=&n&&start_time&/span&&span class=&p&&,&/span& &span class=&n&&arrive_time&/span&&span class=&p&&,&/span& &span class=&n&&time_fucked_up&/span&&span class=&p&&,&/span& &span class=&n&&first_class_seat&/span&&span class=&p&&,&/span&
&span class=&n&&second_class_seat&/span&&span class=&p&&,&/span& &span class=&n&&soft_sleep&/span&&span class=&p&&,&/span& &span class=&n&&hard_sleep&/span&&span class=&p&&,&/span& &span class=&n&&hard_seat&/span&&span class=&p&&,&/span& &span class=&n&&no_seat&/span&&span class=&p&&))&/span&
&span class=&n&&info_list&/span&&span class=&o&&.&/span&&span class=&n&&append&/span&&span class=&p&&(&/span&&span class=&n&&info&/span&&span class=&p&&)&/span&
&span class=&k&&return&/span& &span class=&n&&info_list&/span&
&span class=&k&&except&/span&&span class=&p&&:&/span&
&span class=&k&&return&/span& &span class=&s1&&' 输出信息有误,请重新输入'&/span&
&/code&&/pre&&/div&&p&这个脚本的功能是这样的:
首先 调用 get_query_url()函数,来生成符合api要求的url链接
接着 调用 query_train_info()函数 来获取火车票查询信息
&/p&&p&&b&把结果输出&/b& &/p&&p&&br&&/p&&figure&&img src=&/v2-a4b7d4b1cc57a_b.png& data-rawwidth=&997& data-rawheight=&509& class=&origin_image zh-lightbox-thumb& width=&997& data-original=&/v2-a4b7d4b1cc57a_r.png&&&/figure&&p&&br&&/p&&h2&将功能接入公众号服务器:&/h2&&p&这个地方我就不上完整的代码了
给出这个功能的分支代:&/p&&div class=&highlight&&&pre&&code class=&language-python3&&&span&&/span&&span class=&c1&&# 针对火车票查询特殊处理&/span&
&span class=&k&&elif&/span& &span class=&n&&msg_content&/span&&span class=&p&&[:&/span&&span class=&mi&&4&/span&&span class=&p&&]&/span& &span class=&o&&==&/span& &span class=&s1&&'车票查询'&/span&&span class=&p&&:&/span&
&span class=&n&&info_list&/span& &span class=&o&&=&/span& &span class=&n&&query_train_info&/span&&span class=&p&&(&/span&&span class=&n&&get_query_url&/span&&span class=&p&&(&/span&&span class=&n&&msg_content&/span&&span class=&p&&))&/span&
&span class=&n&&text&/span& &span class=&o&&=&/span& &span class=&s1&&'由于微信文本长度限制,只能回复时间最新的5条列车信息&/span&&span class=&se&&\n\n&/span&&span class=&s1&&'&/span&&span class=&o&&+&/span&&span class=&s1&&''&/span&&span class=&o&&.&/span&&span class=&n&&join&/span&&span class=&p&&(&/span&&span class=&n&&info_list&/span&&span class=&p&&[&/span&&span class=&mi&&0&/span&&span class=&p&&:&/span&&span class=&mi&&5&/span&&span class=&p&&])&/span&
&span class=&k&&return&/span& &span class=&n&&parser_text&/span&&span class=&p&&(&/span&&span class=&n&&xml&/span&&span class=&p&&,&/span& &span class=&n&&text&/span&&span class=&p&&)&/span&
&/code&&/pre&&/div&&p&&br&&/p&&p&单独看这一段代码,可能觉得没头没脑的,&/p&&p&关于公众号的接入,可以看这里:
&a href=&/p/& class=&internal&&从零开始写Python爬虫 --- 爬虫应用: requests+django实现微信公众号后台&/a& &/p&&p&看完之后,你就肯定能明白这端代码是啥意思啦!&/p&&h2&最后:&/h2&&p&这篇文章只是大概记录了如何实现这个功能,
具体的如何寻找:
&/p&&ul&&li&12306api接口&/li&&li&城市代码字典&/li&&li&命令行工具&/li&&li&彩色列表输出
&/li&&/ul&&p&大家可以去找一下 &b&实验楼小哥哥 &/b&的视频录像,
整个过程还是非常愉快的!
感谢!!&/p&&p&&br&&/p&&p&哦哦对了,不建议大家刚开始学写代码就用vim&/p&&p&新人上手还是有一些难度的。&/p&&p&在服务区写一些脚本的时候我推荐一个更加轻量级的工具:「nano」&/p&&p&有这方面需要的可以尝试一下。&/p&&p&暑假一直忙着学车,都已经黑的认不出自己来了。(逃)&/p&&p&&br&&/p&&p&&i&每天的学习记录都会 同步更新到&/i&&/p&&p&&i&微信公众号: findyourownway&/i&&/p&&p&&i&知乎专栏:&a href=&/Ehco-python& class=&internal&&&span class=&invisible&&https://&/span&&span class=&visible&&/Ehco&/span&&span class=&invisible&&-python&/span&&span class=&ellipsis&&&/span&&/a&&/i&&/p&&p&&i&blog : &a href=&/?target=http%3A//www.ehcoblog.ml/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&www.ehcoblog.ml&i class=&icon-external&&&/i&&/a&&/i&&/p&&p&&i&Github: &a href=&/?target=https%3A///Ehco1996/Python-crawler& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/Ehco1996/Pyt&/span&&span class=&invisible&&hon-crawler&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/i& &/p&&p&&/p&&p&&/p&&p&&/p&
好久没更新了,我才不会 告诉你们我沉迷django开发了
话说昨在知乎上看到了这个:
想想自己也有好长时间没有写爬虫了,就去听了一波,
顺便吧这个功能增加到自己的公众号里。
实验楼的代码君小哥哥貌似是第一次直播…
&figure&&img src=&/v2-ddbfccea469_b.jpg& data-rawwidth=&600& data-rawheight=&300& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&/v2-ddbfccea469_r.jpg&&&/figure&&p&在过去,我已经写过好几篇关于调试 / debug / 解 Bug 的文章,但都是从宏观的角度上去讲的,并没有针对哪种工具做具体深入的剖析。&/p&&p&工欲善其事,必先利其器,一个强大的调试工具可以帮助我们快速的发现问题、解决问题。而能不能很好的利用这些工具则是菜鸟程序员和高手程序员在工作方法上的一大区别。&/p&&p&所以,接下来,我打算从我最熟悉也是用户体量最大的 Visual Studio 开始入手,动手写关于 Debug 的系列教程。&/p&&p&虽说 MSDN 上已经啥都有了,但是赤裸裸的英文世界还是挡住了不少的开发者,这里我希望能用最平实易懂的语言让大家快速上手 VS 的调试功能。&/p&&p&它适用于 C#,C/C ++,Visual Basic,JavaScript 等大部分 VS 支持的编程语言。&/p&&p&说明一下,此教程主要参考 MSDN,但同时也添加了我自身在使用过程中积累的一些经验。&/p&&p&好了,废话不多说,进入主题。&/p&&p&&br&&/p&&p&&br&&/p&&p&&b&本次教程将介绍 Visual Studio 入门阶段的一些 Debug 功能。&/b&&/p&&p&&br&&/p&&p&与大多数 IDE 一样,Visual Studio 有两个调试阶段:&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&一是发现并解决 Build 过程中的项目和编译错误。
二是发现并解决 Run 过程中的动态错误。
&/code&&/pre&&/div&&p&&br&&/p&&p&&br&&/p&&figure&&img src=&/v2-e34cab2c74bb680ae7672cc95fda373c_b.png& data-rawwidth=&934& data-rawheight=&115& class=&origin_image zh-lightbox-thumb& width=&934& data-original=&/v2-e34cab2c74bb680ae7672cc95fda373c_r.png&&&/figure&&p&&br&&/p&&p&&br&&/p&&h2&1 Build Solution&/h2&&p&Build 一个 Solution 先从配置开始。&/p&&p&Solution 的配置有两种基本类型: &b&Debug 和
Release。&/b&&/p&&p&它们的区别如下:&/p&&figure&&img src=&/v2-573cab40b1e6a50edbfa6f_b.png& data-rawwidth=&933& data-rawheight=&210& class=&origin_image zh-lightbox-thumb& width=&933& data-original=&/v2-573cab40b1e6a50edbfa6f_r.png&&&/figure&&p&默认配置为 Debug。&/p&&figure&&img src=&/v2-6e4fef60def783dbc37e53d_b.png& data-rawwidth=&611& data-rawheight=&177& class=&origin_image zh-lightbox-thumb& width=&611& data-original=&/v2-6e4fef60def783dbc37e53d_r.png&&&/figure&&p&&br&&/p&&p&除此之外,还可以指定目标平台,如 x86(32 位 Intel CPU)、x64(64 位 Intel CPU)和 ARM(ARM CPU,仅支持某些应用类型)。&/p&&p&若要更改此值,请单击平台下拉列表,选择其他平台或「配置管理器...」&/p&&figure&&img src=&/v2-ce19ab0a7f39deb7dd4b56_b.png& data-rawwidth=&598& data-rawheight=&236& class=&origin_image zh-lightbox-thumb& width=&598& data-original=&/v2-ce19ab0a7f39deb7dd4b56_r.png&&&/figure&&p&&br&&/p&&p&配置好工程之后,就可以开始 Build 了。&/p&&p&最简单的方法是按下 &b&F7,&/b&也可以在菜单中选择 Build Solution。&/p&&figure&&img src=&/v2-ab3be5e86a0b34bd_b.png& data-rawwidth=&555& data-rawheight=&122& class=&origin_image zh-lightbox-thumb& width=&555& data-original=&/v2-ab3be5e86a0b34bd_r.png&&&/figure&&p&&br&&/p&&p&&br&&/p&&p&&br&&/p&&h2&2 Output 窗口&/h2&&p&Build 过程及其结果将显示在 Output 窗口。&/p&&p&这里会显示原始编译器输出,如Error,Warning 等。可以单击 Error 或 Warning 转到对应的代码行。&/p&&p&这是一个 Build 成功的例子。&/p&&figure&&img src=&/v2-cfc5eeeefe84a15161d69cca714f0c58_b.png& data-rawwidth=&675& data-rawheight=&118& class=&origin_image zh-lightbox-thumb& width=&675& data-original=&/v2-cfc5eeeefe84a15161d69cca714f0c58_r.png&&&/figure&&p&&br&&/p&&p&&br&&/p&&p&&br&&/p&&h2&3 Error List 窗口&/h2&&p&Build 过程中出现的 Error 和 Warning 的详细信息可以在 Error List 窗口中查看。&/p&&figure&&img src=&/v2-fde9d_b.png& data-rawwidth=&629& data-rawheight=&169& class=&origin_image zh-lightbox-thumb& width=&629& data-original=&/v2-fde9d_r.png&&&/figure&&p&&br&&/p&&p&单击某一项 Error 或者 Warning,可以转到对应的发生 Error 或者 Warning 的代码行。&/p&&figure&&img src=&/v2-05ddaccad0d_b.png& data-rawwidth=&410& data-rawheight=&137& class=&content_image& width=&410&&&/figure&&p&&br&&/p&&p&如上图,&b&红色波浪线&/b&代表了 Error ,可以将鼠标悬停在上方获取出现此 Error 的详细信息。&br&&/p&&p&有的时候,并不是所有的 Error 你一眼就能看出其中的问题,可能会出现一些只对编译器才有意义的术语或者代码,例如:&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&fatal error C1189: #error ...
&/code&&/pre&&/div&&p&此时,很多人的做法是把这段话复制粘贴到百度/谷歌搜索栏再去搜索。其实你未必要去做这样的重复劳动。&/p&&p&也许你不知道,VS 自带了搜索功能。&/p&&p&在相应的 Error 或者 Warning 条目上右击,会出现一个菜单,点击 Show Error Help,将自动执行该 Error 或者 Warning 的 Bing 搜索。&/p&&figure&&img src=&/v2-436c919d11ae63b4a429eb1be65ace82_b.png& data-rawwidth=&675& data-rawheight=&222& class=&origin_image zh-lightbox-thumb& width=&675& data-original=&/v2-436c919d11ae63b4a429eb1be65ace82_r.png&&&/figure&&p&&br&&/p&&p&另外,也可以点击 Code 列中的错误代码超链接,如 CS1525,同样会执行该错误代码的 Bing 搜索。&/p&&p&一一查看并解决 Error List 中出现的所有的 Error,Rebuild Solution 直至成功生成解决方案。&/p&&p&&br&&/p&&p&&br&&/p&&p&&br&&/p&&h2&4 代码静态分析&/h2&&p&解决了 Build 过程中 Error List 出现的所有 Error 之后,可以尝试执行代码静态分析。代码静态分析会去分析代码中可能的导致运行时错误等问题,并给出 Warning。&/p&&p&不要觉得没 Erorr 了,Build 成功了,就万事大吉了,在一开始的时候,尽量解决代码中出现的 Warning,可以省去将来不必要的麻烦。&/p&&p&可以按快捷键 Alt+F11 也可以点击如下菜单,执行代码静态分析。&/p&&figure&&img src=&/v2-fcf11f8d1dcaa212badbe_b.png& data-rawwidth=&382& data-rawheight=&191& class=&content_image& width=&382&&&/figure&&p&&br&&/p&&p&Warning 同样出现在 Error List 窗口,点击 「 Warning」选项卡查看。&/p&&figure&&img src=&/v2-8b4dededed146fdbe3e11b_b.png& data-rawwidth=&629& data-rawheight=&106& class=&origin_image zh-lightbox-thumb& width=&629& data-original=&/v2-8b4dededed146fdbe3e11b_r.png&&&/figure&&p&&br&&/p&&p&单击条目跳转至出现 Warning 的代码行。&b&绿色波浪线&/b&代表了 Warning,可将鼠标悬停在上方获取详细信息。&/p&&figure&&img src=&/v2-eefbde92ea6be9b670c1f75_b.png& data-rawwidth=&581& data-rawheight=&142& class=&origin_image zh-lightbox-thumb& width=&581& data-original=&/v2-eefbde92ea6be9b670c1f75_r.png&&&/figure&&p&&br&&/p&&p&&br&&/p&&figure&&img src=&/v2-e272da93ed5796cfd405bc61e4cdbbca_b.png& data-rawwidth=&933& data-rawheight=&111& class=&origin_image zh-lightbox-thumb& width=&933& data-original=&/v2-e272da93ed5796cfd405bc61e4cdbbca_r.png&&&/figure&&p&&br&&/p&&p&&br&&/p&&h2&5 基本操作&/h2&&p&Build Solution 成功以后,按下 F5 执行,这将在 Debug 环境中启动程序。&/p&&p&此时默认出现两个窗口。&/p&&figure&&img src=&/v2-6b7e4d2c1_b.png& data-rawwidth=&653& data-rawheight=&241& class=&origin_image zh-lightbox-thumb& width=&653& data-original=&/v2-6b7e4d2c1_r.png&&&/figure&&p&&br&&/p&&p&按下 Break 或 Stop 按钮来暂停或停止程序。&/p&&figure&&img src=&/v2-a7e05ca6bfc321e1fd7d9e_b.png& data-rawwidth=&359& data-rawheight=&106& class=&content_image& width=&359&&&/figure&&p&&br&&/p&&p&按下 Continue 按钮继续执行程序。&/p&&figure&&img src=&/v2-716fa75a9aa51a2fc75b3fd_b.png& data-rawwidth=&248& data-rawheight=&87& class=&content_image& width=&248&&&/figure&&p&&br&&/p&&p&&br&&/p&&p&&br&&/p&&h2&6 设置断点&/h2&&p&设置断点是 Debug 过程最最最常用的功能。&/p&&p&断点指示 VS 在执行到哪一行代码的时候挂起。程序挂起的时候,可以查看任意你想看的东西,如变量值,内存,代码执行分支等。&/p&&p&设置断点很简单,只要在编辑区的边缘单击一下或者在相应的代码行按下 F9,旁边就会出现一个红色圆点,这个红色圆点就代表了断点。&/p&&figure&&img src=&/v2-a3f4b62e94de36c689442_b.png& data-rawwidth=&575& data-rawheight=&169& class=&origin_image zh-lightbox-thumb& width=&575& data-original=&/v2-a3f4b62e94de36c689442_r.png&&&/figure&&p&&br&&/p&&p&设置好断点,按下 F5,程序即会在断点处停下来。&/p&&p&动图在这里。&/p&&figure&&img src=&/v2-fbc568cf83a11abea5e250_b.jpg& data-rawwidth=&738& data-rawheight=&511& data-thumbnail=&/v2-fbc568cf83a11abea5e250_b.jpg& class=&origin_image zh-lightbox-thumb& width=&738& data-original=&/v2-fbc568cf83a11abea5e250_r.gif&&&/figure&&p&&br&&/p&&p&接下来,常用的几个操作是:&/p&&figure&&img src=&/v2-ba468eea64d6ed5b0e61c6c_b.png& data-rawwidth=&1009& data-rawheight=&209& class=&origin_image zh-lightbox-thumb& width=&1009& data-original=&/v2-ba468eea64d6ed5b0e61c6c_r.png&&&/figure&&p&&br&&/p&&p&可以设置多个断点,在 F5,F10 等快捷键之间切换,转到不同的断点。&/p&&p&&br&&/p&&p&&br&&/p&&p&&br&&/p&&h2&7 查看变量&/h2&&p&程序执行到断点处,停下来的时候,可以查看代码中的变量,堆栈调用情况等,看下它们是不是在预期的范围内。&/p&&figure&&img src=&/v2-1f85cc986a5e49a91cb3f_b.png& data-rawwidth=&537& data-rawheight=&79& class=&origin_image zh-lightbox-thumb& width=&537& data-original=&/v2-1f85cc986a5e49a91cb3f_r.png&&&/figure&&p&&br&&/p&&p&将鼠标悬停在变量上面,可以看到它此刻的值。&/p&&p&再放个动图,看的更清楚一点。&/p&&figure&&img src=&/v2-ceecf82d4b0_b.jpg& data-rawwidth=&757& data-rawheight=&316& data-thumbnail=&/v2-ceecf82d4b0_b.jpg& class=&origin_image zh-lightbox-thumb& width=&757& data-original=&/v2-ceecf82d4b0_r.gif&&&/figure&&p&&br&&/p&&p&&br&&/p&&p&&br&&/p&&p&&br&&/p&&p&==&/p&&p&只收藏不点赞的都是耍流氓
O(∩_∩)O~&/p&&p&&br&&/p&&p&&br&&/p&&p&&b&相关教程&/b&&/p&&p&&a href=&/p/& class=&internal&&Visual Studio Debug 教程 之 窗口&/a&&/p&&p&&/p&&p&&/p&
在过去,我已经写过好几篇关于调试 / debug / 解 Bug 的文章,但都是从宏观的角度上去讲的,并没有针对哪种工具做具体深入的剖析。工欲善其事,必先利其器,一个强大的调试工具可以帮助我们快速的发现问题、解决问题。而能不能很好的利用这些工具则是菜鸟程…
&figure&&img src=&/v2-0bbdc9b295ad2df6e13e40113feb09cf_b.jpg& data-rawwidth=&800& data-rawheight=&423& class=&origin_image zh-lightbox-thumb& width=&800& data-original=&/v2-0bbdc9b295ad2df6e13e40113feb09cf_r.jpg&&&/figure&&p&上一课带大家聊了聊反爬与反反爬最基础的对抗-代理ip,别看这个简单,真正处理好了代理ip基本上解决大半的爬虫问题,包括本节的验证码。很多网站弹出验证码也是因为发现ip重复过多,比如搜狗微信搜索,如果在合理的时间切换ip,就可以完美的躲避掉搜狗微信中的验证码(注意只有搜狗微信中的验证码可以,微信中的是不可以的,其中区别可以通过浏览器中的域名来区分)。&/p&&p&上一篇文章写完之后,爬虫天坑的文章意外收获了不少赞,这里拜谢大家支持,同时如果天坑系列破百赞的话,我会继续更新那个系列。&/p&&p&要完了赞,扯完了废话,我们赶紧进入这一篇文章的正题-验证码识别。&/p&&p&先让我来摘抄一段验证码的介绍:&/p&&blockquote&验证码(CAPTCHA)是“Completely Automated Public Turing test to tell Computers and Humans Apart”(全自动区分计算机和人类的图灵测试)的缩写,是一种区分用户是计算机还是人的公共全自动程序。&/blockquote&&p&话说直到今天我才知道CAPTCHA原来是这么直白的英文缩写,外国人对单词的缩写狂热真是一点不比国人差啊。(突然想到刚进公司那会摸不着头脑的TGIF)&/p&&p&那好了,延续上篇文章的套路,我们先来看看反爬:&/p&&h2&&b&一.为什么验证码可以反爬?&/b&&/h2&&p&简单来说,是}

我要回帖

更多关于 小黑方框 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信