python 搜索引擎 实验楼的源码_【如何入门 Python 爬虫?】-看准网

匿名用户

学会一门语言的捷径只有一个: Getting Started!¶ 起步阶段  任何一种编程语言都包含两个部分:硬知识和软知识,起步阶段的主要任务是掌握硬知识。°1 硬知识  “硬知识”指的是编程语言的语法、算法和数据结构、编程范式等,例如:变量和类型、循环语句、分支、函数、类。这部分知识也是具有普适性的,看上去是掌握了一种语法,实际是建立了一种思维。例如:让一个 Java 程序员去学习 Python,他可以很快的将 Java 中的学到的面向对象的知识 map 到 Python 中来,因此能够快速掌握 Python 中面向对象的特性。  如果你是刚开始学习编程的新手,一本可靠的语法书是非常重要的。它看上去可能非常枯燥乏味,但对于建立稳固的编程思维是必不可少。下面列出了一些适合初学者入门的教学材料:  1「笨方法学 Python」:http://learnpythonthehardway....  这本书在讲解 Python 的语法成分时,还附带大量可实践的例子,非常适合快速起步。  2「廖雪峰的 Python 2.7 教程」:Home - 廖雪峰的官方网站  Python 中文教程的翘楚,专为刚刚步入程序世界的小白打造。  ❖「The Hitchhiker’s Guide to Python!」:The Hitchhiker’s Guide to Python!  这本指南着重于 Python 的最佳实践,不管你是 Python 专家还是新手,都能获得极大的帮助。  3「Python 官方文档」:Our Documentation  实践中大部分问题,都可以在官方文档中找到答案。  4 辅助工具:Python Tutor  一个 Python 对象可视化的项目,用图形辅助你理解 Python 中的各种概念。Python 的哲学:  用一种方法,最好是只有一种方法来做一件事。  学习也是一样,虽然推荐了多种学习资料,但实际学习的时候,最好只选择其中的一个,坚持看完。  必要的时候,可能需要阅读讲解数据结构和算法的书,这些知识对于理解和使用 Python 中的对象模型有着很大的帮助。°2 软知识  “软知识”则是特定语言环境下的语法技巧、类库的使用、IDE的选择等等。这一部分,即使完全不了解不会使用,也不会妨碍你去编程,只不过写出的程序,看上去显得“傻”了些。  对这些知识的学习,取决于你尝试解决的问题的领域和深度。对初学者而言,起步阶段极易走火,或者在选择 Python 版本时徘徊不决,一会儿看 2.7 一会儿又转到 3.0,或者徜徉在类库的大海中无法自拔,Scrapy,Numpy,Django 什么都要试试,或者参与编辑器圣战、大括号缩进探究、操作系统辩论赛等无意义活动,或者整天跪舔语法糖,老想着怎么一行代码把所有的事情做完,或者去构想圣洁的性能安全通用性健壮性全部满分的解决方案。  很多“大牛”都会告诫初学者,用这个用那个,少走弯路,这样反而把初学者推向了真正的弯路。  还不如告诉初学者,学习本来就是个需要你去走弯路出 Bug,只能脚踏实地,没有奇迹只有狗屎的过程。  选择一个方向先走下去,哪怕脏丑差,走不动了再看看有没有更好的解决途径。  自己走了弯路,你才知道这么做的好处,才能理解为什么人们可以手写状态机去匹配却偏要发明正则表达式,为什么面向过程可以解决却偏要面向对象,为什么我可以操纵每一根指针却偏要自动管理内存,为什么我可以嵌套回调却偏要用 Promise...  更重要的时,你会明白,高层次的解决方法都是对低层次的封装,并不是任何情况下都是最有效最合适的。  技术涌进就像波浪一样,那些陈旧的封存已久的技术,消退了迟早还会涌回的。就像现在移动端应用、手游和 HTML5 的火热,某些方面不正在重演过去 PC 的那些历史么?  因此,不要担心自己走错路误了终身,坚持并保持进步才是正道。  起步阶段的核心任务是掌握硬知识,软知识做适当了解,有了稳固的根,粗壮的枝干,才能长出浓密的叶子,结出甜美的果实。¶ 发展阶段  完成了基础知识的学习,必定会感到一阵空虚,怀疑这些语法知识是不是真的有用。  没错,你的怀疑是非常正确的。要让 Python 发挥出它的价值,当然不能停留在语法层面。  发展阶段的核心任务,就是“跳出 Python,拥抱世界”。  在你面前会有多个分支:科学计算和数据分析、爬虫、Web 网站、游戏、命令行实用工具等等等等,这些都不是仅仅知道 Python 语法就能解决的问题。  拿爬虫举例,如果你对计算机网络,HTTP协议,HTML,文本编码,JSON一无所知,你能做好这部分的工作么?而你在起步阶段的基础知识也同样重要,如果你连循环递归怎么写都还要查文档,连 BFS 都不知道怎么实现,这就像工匠做石凳每次起锤都要思考锤子怎么使用一样,非常低效。  在这个阶段,不可避免要接触大量类库,阅读大量书籍的。°1 类库方面  「Awesome Python 项目」:vinta/awesome-python · GitHub  这里列出了你在尝试解决各种实际问题时,Python 社区已有的工具型类库,如下图所示:  你可以按照实际需求,寻找你需要的类库。  至于相关类库如何使用,必须掌握的技能便是阅读文档。由于开源社区大多数文档都是英文写成的,所以,英语不好的同学,需要恶补下。°2 书籍方面:  这里我只列出一些我觉得比较有一些帮助的书籍,详细的请看豆瓣的书评:科学和数据分析:  ❖「集体智慧编程」:集体智慧编程 (豆瓣)  ❖「数学之美」:数学之美 (豆瓣)  ❖「统计学习方法」:统计学习方法 (豆瓣)  ❖「Pattern Recognition And Machine Learning」:Pattern Recognition And Machine Learning (豆瓣)  ❖「数据科学实战」:数据科学实战 (豆瓣)  ❖「数据检索导论」:信息检索导论 (豆瓣)爬虫:  ❖「HTTP 权威指南」:HTTP权威指南 (豆瓣)Web 网站:  ❖「HTML & CSS 设计与构建网站」:HTML & CSS设计与构建网站 (豆瓣)  ...  列到这里已经不需要继续了。  聪明的你一定会发现上面的大部分书籍,并不是讲 Python 的书,而更多的是专业知识。  事实上,这里所谓“跳出 Python,拥抱世界”,其实是发现 Python 和专业知识相结合,能够解决很多实际问题。这个阶段能走到什么程度,更多的取决于自己的专业知识。¶ 深入阶段  这个阶段的你,对 Python 几乎了如指掌,那么你一定知道 Python 是用 C 语言实现的。  可是 Python 对象的“动态特征”是怎么用相对底层,连自动内存管理都没有的C语言实现的呢?这时候就不能停留在表面了,勇敢的拆开 Python 的黑盒子,深入到语言的内部,去看它的历史,读它的源码,才能真正理解它的设计思路。这里推荐一本书:  「Python 源码剖析」:Python源码剖析 (豆瓣)  这本书把 Python 源码中最核心的部分,给出了详细的阐释,不过阅读此书需要对 C 语言内存模型和指针有着很好的理解。  另外,Python 本身是一门杂糅多种范式的动态语言,也就是说,相对于 C 的过程式、 Haskell 等的函数式、Java 基于类的面向对象而言,它都不够纯粹。换而言之,编程语言的“道学”,在 Python 中只能有限的体悟。学习某种编程范式时,从那些面向这种范式更加纯粹的语言出发,才能有更深刻的理解,也能了解到 Python 语言的根源。这里推荐一门公开课  「编程范式」:斯坦福大学公开课:编程范式  讲师高屋建瓴,从各种编程范式的代表语言出发,给出了每种编程范式最核心的思想。  值得一提的是,这门课程对C语言有非常深入的讲解,例如C语言的范型和内存管理。这些知识,对阅读 Python 源码也有大有帮助。  Python 的许多最佳实践都隐藏在那些众所周知的框架和类库中,例如 Django、Tornado 等等。在它们的源代码中淘金,也是个不错的选择。¶ 最后的话  每个人学编程的道路都是不一样的,其实大都殊途同归,没有迷路的人只有不能坚持的人。虽然听上去有点鸡汤,但是这是事实。最后的最后,再推荐下 SegmentFault 的免费公开课:Python 入门导论内容来自 SegmentFault 社区原文:如何系统地自学 Python?作者:何昊另外,再整理一份笔记和资源给提问者和其他在学Python的朋友们~1.Programming Computer Vision with Python 学习笔记《Programming Computer Vision with Python》是一本介绍计算机视觉底层基本理论和算法的入门书,通过这本收可以学到有关对象识别、基于内容的图像搜索、光学字符识别、光流法、跟踪、三维重建、立体成像、增强现实、姿态估计、全景创建、图像分割、降噪、图像分组等技术的实现原理。英文版PDF下载:https://it-ebooks.info/book/836/中文版介绍:http://book.douban.com/subjec...目录及章节简介Programming Computer Vision with Python (学习笔记一)先介绍基本的图像处理,包括图像的读取、转换、缩放、导数计算、画图和保存,这些知识将为后面内容的学习打下基础。Programming Computer Vision with Python (学习笔记二)首先介绍跟图像处理、显示有关两个库:NumPy和Matplotlib,然后介绍增强图像对比度的实现原理。Programming Computer Vision with Python (学习笔记三)原书对于PCA的讲解只有一小节,一笔带过的感觉,但我发现PCA是一个很重要的基础知识点,在机器机视觉、人脸识别以及一些高级图像处理技术时都被经常用到,所以本人自行对PCA进行了更深入的学习。Programming Computer Vision with Python (学习笔记四)上一个笔记主要是讲了PCA的原理,并给出了二维图像降一维的示例代码。但还遗留了以下几个问题:在计算协方差和特征向量的方法上,书上使用的是一种被作者称为compact trick的技巧,以及奇异值分解(SVD),这些都是什么东西呢?如何把PCA运用在多张图片上?所以,我们需要进一步的了解,同时,为示例对多张图片进行PCA,我选了一个跟书相似但更有趣的例子来做——人脸识别。Programming Computer Vision with Python (学习笔记五)SciPy库,与之前我们使用的NumPy和Matplotlib,都是http://scipy.org提供的用于科学计算方面的核心库。相对NumPy,SciPy库提供了面向更高层应用的算法和函数(其实也是基于NumPy实现的),并以子模块的形式组织,每个子模块对应不同的应用领域。Programming Computer Vision with Python (学习笔记六)边缘检测(edge detection)是最重要的图像处理技术之一,图像边缘检测大幅度地减少了数据量,并且剔除了可以认为不相关的信息,保留了图像重要的结构属性,为后续图像理解方法提供了基础。Programming Computer Vision with Python (学习笔记七)数学形态学(mathematical morphology)关注的是图像中的形状,它提供了一些方法用于检测形状和改变形状。起初是基于二值图像提出的,后来扩展到灰度图像。二值图像就是:每个像素的值只能是0或1,1代表描绘图像的点,0代表背景。基本的形态学运算包括:腐蚀(erosion)、膨胀(dilation)、开(opening)、闭(closing),对于这些运算,都需要用到被称为结构元素(Structuring element)的模板,一般为方形,以小矩阵的形式表示,但它的元素的值只能是0或1,它代表的是一个集合,这个集合罩在原图像上,可以跟原图像的形状进行集合运算。Programming Computer Vision with Python (学习笔记八)图像去噪(Image Denoising)的过程就是将噪点从图像中去除的同时尽可能的保留原图像的细节和结构。这里讲的去噪跟前面笔记提过的去噪不一样,这里是指高级去噪技术,前面提过的高斯平滑也能去噪,但高斯平滑去噪的同时也把边缘模糊化了,另外使用形态学的方法去噪是指去除一些粗的椒盐噪声。对于一幅密布噪点的图像,如果使其变得清晰又保留边缘细节,这是高级去噪技术所要解决的问题。Programming Computer Vision with Python (学习笔记九)角检测(Corner detection)是指检测图像中具有代表性的(我们感兴趣的)角点,一般讲为形状或边缘的拐角处,这些点可以大略标记对象在图像中的轮廓和位置,如果从一个图像序列中检测每个图像的角点,就可以找出图像之间存在的相关和相对应的角点,这对比如全景拼接(多张图片拼接成一张全景图片)很有用。角检测还可以用在运动检测、物体识别等方面。Programming Computer Vision with Python (学习笔记十)现在考虑一个全景图拼接的应用场景,假设现有两张图片需要拼接成一张全景图,这两张图片是通过相机右转一定角度拍摄出来的,两张图片有部分取景是重叠的。如何实现拼接?当然这是一个不简单的问题,我们现在只考虑实现拼接目标的第一步:找出图像中重叠的内容,以及分别在两张图片中的位置。Programming Computer Vision with Python (学习笔记十一)尺度不变特征变换(Scale-invariant feature transform, 简称SIFT)是图像局部特征提取的现代方法——基于区域/图像块的分析。在上篇笔记里我们使用的图像之间对应点的匹配方法,不适用于不同尺度的图像。有许多应用场景需要对不同尺度(即分辨率、缩放、旋转角度、亮度等都可能存在不同)的图像进行特征识别和匹配,这就需要一种特征提取方法,通过这种方法提取出来的特征描述,可以不受尺度的影响,SIFT算法就是这种方法的实现。SIFT算法的应用非常广泛,包括物体识别、机器人地图感知与导航、全景拼接、3D建模、手势识别、影像追踪和动作比对等,原书后面章节的算法也会多次用到它。SIFT算法的过程较复杂,本文只是粗略介绍其关键步骤,以便引出SURF——基于SIFT的改进算法。Programming Computer Vision with Python (学习笔记十二)ORB(Oriented FAST and Rotated BRIEF)可用来替代SIFT(或SURF),它对图像更具有抗噪特性,是一种特征检测高效算法,其速度满足实时要求,可用于增强图像匹配应用。ORB的算法基于FAST角检测(Features from accelerated segment test)和BRIEF(Binary Robust Independent Elementary Features)特征描述符,这也是它名字的由来。最后的最后,再推荐下 SegmentFault 的免费公开课:Python 入门导论2.资源图文教程:Python教程 by @廖雪峰Crossin的编程教室 微信公众号:crossincode by @CrossinPython快速教程 by @Vamei零基础学Python,GitHub地址 by @老齐PyPython学习笔记(第二版) by @qyuhen个人点评:我是跟着“Crossin的编程教室”的微信公众号每天学习一课来学习Python的,当时的动力是据说“Python女神”也在学完习,后来也看过廖雪峰老师的教程,Vamei和老齐Py的没有看过。网站教程:《Python入门》 and 《Python进阶》 by @廖雪峰 from 慕课网《"Python研发工程师"的技能树》 from 实验楼《Learn to program in Python》 from Codecademy《Learn Python the hard way》Crossin的编程教室 by @Crossin (将课程分门别类了)视频教程:《疯狂的Python:快速入门精讲》《玩转Python教程》《零基础入门学Python》经典入门书籍:中文书籍《Head First Python(中文版)》《Python基础教程(第2版·修订版)》《笨办法学Python(第三版)》《简明Python教程》《Python编程实践》英文书籍25本免费的Python电子书9本免费的Python编程书笔记和资源来自 SegmentFault 以下两篇社区文章:SegmentFault 技术周刊 Vol.30 - 学习 Python 来做一些神奇好玩的事情吧Python 初学者的资源总结

2018-12-22 11:53

评论

1

0/140

发布

匿名

你可能感兴趣的:(python,搜索引擎,实验楼的源码)