js提取指定网站内容 关于Python的劝学指南
优采云 发布时间: 2022-05-02 10:49js提取指定网站内容 关于Python的劝学指南
关于Python的劝学指南
最近和几位朋友聊天,无意中谈到了关于Python的话题,这几位朋友之中有做财务的、有做投资的、也有项目负责人还有一些法务的朋友,他们所从事的行业与计算机没有太多关联,但是对Python所表现出来的热情,着实让我感到意外。他们选择学习Python的原因大致有两点:第一,认为Python很有用(有需求);第二,认为Python很简单(成本低,主要指时间成本)。那么,作为非计算机行业的从业人员,比如法律或者财税等其他非计算机行业的职业者,是否有学习这项技能的必要?这是我们今天要分享的话题。有言在先,分享这个话题,并不代表我本人的计算机水平达到了某种程度,只是作为一个业余学习Python的“过来人”,尝试对同样准备学习他的朋友们提供一些参考。对于专业选手来讲,本文的一些观点或许并不适用。
Python很有用?编程之路大致有两种途径,一种是先系统地学习编程语言,然后用语言解决遇到的问题;另一种是先有了应用场景需求,然后拆分问题寻找编程的实现方法。第一种属于被动接受的学习方式,也是传统教育普遍采用的培养方式,优点是基础往往比较牢靠,对知识也有全面的认知,缺点是学习的时间比较久,前期看不到成效并且不容易坚持下来。另一种属于主动探索的学习方式,通常是脱离学校教育后的主要学习方式,优点是目标和需求比较明确,能切实地解决问题,缺点也比较明显,没有系统化的指导和培养,往往需要自己寻找解决各种问题的方案,会走一些弯路,需要一点百折不挠的劲头才行。前者,适用于几乎所有的语言学习,后者适用于简单的语言学习,比如Python,也适用于从一门语言向另一门语言转变的学习,比如从C++转学Python。我是接触计算机比较早的一批人,起先学习的编程语言是C++,但是在取得该语言等级认证后的很长一段时间里,我并没有做出过任何一个实用的程序项目,因为如果不从事计算机行业,这些编程语言几乎没有任何应用场景,但Python算是个例外。我使用Python的第一个应用场景是毕业后的租房。当年的豆瓣网还是个很纯粹的平台,上海许多优质的房屋直租信息常常会在这个平台发布,对于有租房需求又没时间泡在平台上的我来讲,通过程序检索指定区域内的租房信息并将信息实时反馈给我,无疑是一个不错的方案,于是我向计算机专业的朋友请教了解决方案,他们向我推荐了Python(相比之下,这个场景用包括C语言在内的其他语言都很难实现),在见识到它强大的网络爬虫功能后,我开启了自己的Python之路。
*敏*感*词*的职业中,Python的应用场景主要围绕着文本文档处理和信息筛查展开,具体可以分为这样几类:(1)文本信息的筛查,尤其是对批量文本进行深度检索。比如,某年在某省高院协调处理地产纠纷诉讼事务的时候,我们对于解除房地产合作协议的诉讼*敏*感*词*收费标准与当地*敏*感*词*有了不同的看法,当地*敏*感*词*倾向于按照合同总价款的比例收取,而我们倾向于按照申请金额的比例收取,两个收费的标准相差了近600多万。为了佐证我们的观点,我们调取了北京、上海、广州等几个重要城市的近500余份裁判文书,并从中提取出诉讼费的裁判数据,形成了一份关于诉讼费收取的专项报告,其中对文书筛选的工作便是通过编程来完成的。(2)网站关键信息检索。比如,在一些官方网站检索功能受限的情况下,通过遍历网页的方式可以较准确地检索到官方公布的数据和文书(此处,忍住吐嘈某度在信息检索方面的商业化运作,以及某些行政类网站信息维护的质量,暂略去1000字)。又比如,在公报案例库还不健全的时候,通过自定义编程建立起自己的数据中心。(3)资料的收集、归纳和整理。比如,某年在研究某集团公司历年来的1100余件重大诉讼*敏*感*词*的过程中,提取历年来的*敏*感*词*信息,汇总整理报告的部分,也是通过编程辅助完成的。
又比如,在企业并购的业务中,需要对某上市公司历年公报信息进行收集,正常情况下历年公布的信息需要逐一下载,这项工作同样也可以通过程序自动处理。(4)格式化文本及文档。包括PDF及OFFICE格式文档操作,格式转换,信息提取与变更等,通常可以很方便地实现多任务的串联操作。对于想要接触Python的朋友,建议大家认真地了解一下编程与自身应用场景需求之间的匹配问题,如果有好的软件可以方便地实现这些应用场景,其实并不需要自行编程处理。比如,一些课程机构宣扬的用Python操作Excel,就我个人的体验来看,其中很多应用场景并不如使用Office办公软件方便,倒是财会的朋友常用的VBA功能可以尝试使用Python作为替换。技术发展至今,编程所能够解决的问题仍然局限于批量的、规律的以及重复性的一些工作,或者把一些分散的独立任务串联到一起,这是编程所能实现的基本任务。如果想要应对那些少量的、不规律的以及一次性的工作,启用编程并不是一个好的选择。因为少量的工作可以径直做完,并不需要通过编程处理(技术化解决的优势并不明显);而不规律的工作场景,由于所需要的个性化细节过多,一般的编程技术难以实现或者技术尚不能实现;对于一次性的工作需要考虑编程花费的时间成本与收获之间的平衡,花费过多而收获却少反倒不如直接处理来的快,这是在实用性能之外需要考虑的成本因素。
当然,有一部分朋友需要用编程解决一些专业性的计算和模拟测试等问题,这不在本文的讨论之列,这类需求应当归入专业需求者的行列,不适用于业余需求者。Python很容易?片面地强调Python学习起来很容易是不对的,事实上,容易与困难始终是相对的。我们可以说Python语言相对于其他语言来讲容易的多,因为有良好的扩展性能,许多应用场景可以由封装完备的库(可以理解为系统安装不同的操作软件,只不过这是非视窗化的软件)来实现,因此Python的程序代码比其他语言要简洁许多。早期最流行的一份学习资料是《简明Python教程》的小册子(原作Swaroop,C.H由沈洁元翻译,适用于python2.0版本),整个文档仅有70多页。支持3.0的版本也不需要购买教程,官方已经提供了最权威的版本(详见),这部分内容用一天的时间学习已经足够,哪怕没有编程经验的新手要学完整个课程也不会超过3天时间,这是该语言的特点,也是该语言“很容易”的重要依据。但是仅凭学完这些,你仍不能解决实际中的任何应用问题,因为需要继续了解和掌握的辅助知识还有很多,主要有两大方面:一方面你需要补充学习支持你需求的各类库,比如支持文本处理的Xlings、PyPDF2、python-docx等库,支持数据分析功能的Numpy、Pandas、Matplatlib等库,每一个库所能支持的功能不同,对操作系统的依赖也不相同,这时候我们往往需要阅读这些库的技术文档并做好试错的心理准备。
另一方面,你还需要补充学习一些其他计算机语言的相关知识,比如掌握基本的Linux或CMD操作命令,对于文字处理需求较多的朋友尤其需要掌握正则表达式(类似于Office中的通配符)的使用方法,对爬虫有需求的朋友仍需要学习网络开发语言或者相关技术(包括HTML、CSS、PHP、JS、JQ、AJAX中的一种或者多种组合)。几乎每个应用场景都需要你了解与这项功能相关联的知识,如果前期你对计算机的熟悉程度比较低的话,这里的知识缺失仍然会使你寸步难行。除此以外,你需要付出的额外成本还包括修正各种出其不意的报错,包括:(1)兼容性错误。比如一些库支持Mac系统并不支持Win系统,你需要在系统与库之间做出新的取舍,再比如系统升级而库未升级导致的新问题,软件冲突问题等。(2)程序本身的错误。有些错误是语言书写不规范导致的,这在学习初期尤其严重,比如以往用于2.0的函数或语法被用在了3.0的程序中,比如常见的数据类型、标点、空格以及由于多字、少字、错字引发的各类程序报错,以及对函数调用过程中的出现的规则错误,等等使你妨不胜妨。(3)网络错误或网络受限。在需要网络的各类编程活动中,通常会遇到网络的问题,比如受网络限制官网指定的Brew的安装方法在很多地区并不能操作成功,需要将官方源调整为民间备用源等。
以上是编程会遇到的普遍问题,那么接下来的技术局限是因人而异的另一重困难。几乎每个人都会经历这一过程,那种苦苦思索仍不得其解的感受,可能会使你兴奋,也可能会使你崩溃,你需要有这方面的心理准备。比如冒泡排序法作为经典的排序算法,几乎是每本程序书中都讲过的内容,有的人总也想不明白,也有些人知道了其中的原理,但就是写不出能够运行的程式。我最近曾尝试编写一个查询汉字五笔编码的工具时,尝试了许多方法也找寻了许多教程,但是仍然没有办法得到指定网页反馈来的结果。对于这种经历,解决的途径无非是两种:一是放弃;二是继续想办法攻克(多数人会选择前一项,这与我们处理工作问题时的遭遇相类似)。前者的一次放弃很可能只是下一次放弃的开端,直到你放弃整个语言。而后者意味着你可能需要投入更多的时间,这种投入可能会成功也可能未必会有收获。
每一个解决问题的人,总会遇到更多的问题,这是解题人的宿命。总的来说,Python在工作中的应用场景毋庸置疑,它几乎包含了所有的需要用到电脑工作的行业,而且未来的应用也很可观。当然,我们并不需要过分地追赶这门语言,毕竟要真正掌握这门语言其实并不算太简单,考虑到我们的应用场景和应用频率,对于已经有主要职业的从业者们来讲,学习过程中的所有困难都将折算成为时间成本,而你付出的成本越大这项技能的性价比就越低,这是每个尝试业余了解这项技能的人需要认真考虑的问题。不过,如果你把它当作业余爱好,那就另当别论了,毕竟编程也是一件和打王者荣耀一样很好玩的事。尤其,提出问题、分析问题、解决问题会伴随着整个编程过程,而这个过程会让我们习惯于拆解各项需求,思考实现的步骤,并为实现需求寻找解决方案,最后达到一步步实现需求的效果,这本身就是一种很好的思维训练。以上是本期Til与您分享的话题。感谢您的关注和支持。