华为大牛私藏Python学习通道资料(绝对系统)
大牛私藏Python学习路线,Python基础到高级路线大纲等,95后码农写了一份,最全系统Python学习路线经验心得
最全Python学习路线总结1
(一)如何学习Python2
(二)一些Python免费课程推荐3
(三)Python爬虫需要哪些知识?4
(四)Python爬虫进阶6
(五)Python爬虫面试指南7
(六)Python如何进阶9
(七)Python爬虫入门10
(八)Python开发微信公众号12
(九)Python面试概念和代码15
(十)Python书籍23推荐
![](https://img.haomeiwen.com/i12288886/a83c8775cf4eec76.png)
(一)如何学习Python
学习Python大致可以分为以下几个阶段:
1.刚上手的时候肯定是先过一遍Python最基本的知识,比如说:变量、数据结构、语法等,基础过的很快,基本上1~2周时间就能过完了,我当时是在这儿看的基础:Python 简介 | 菜鸟教程
2.看完基础后,就是做一些小项目巩固基础,比方说:做一个终端计算器,如果实在找不到什么练手项目,可以在 Codecademy - learn to code, interactively, for free 上面进行练习。学习资料请关注微信公众号:程序员大牛!
![](https://img.haomeiwen.com/i12288886/ce7a1ed74b27888f.png)
3. 如果时间充裕的话可以买一本讲Python基础的书籍比如《Python编程从入门到实践》,阅读这些书籍,在巩固一遍基础的同时你会发现自己诸多没有学习到的边边角角,这一步是对自己基础知识的补充。
4.Python库是Python的精华所在,可以说Python库组成并且造就了Python,Python库是Python开发者的利器,所以学习Python库就显得尤为重要:The Python Standard Library ,Python库很多,如果你没有时间全部看完,不妨学习一遍常用的Python库:Python常用库整理 - 知乎专栏
5.Python库是开发者利器,用这些库你可以做很多很多东西,最常见的网络爬虫、自然语言处理、图像识别等等,这些领域都有很强大的Python库做支持,所以当你学了Python库之后,一定要第一时间进行练习。如何寻找自己需要的Python库呢?推荐我之前的一个回答:如何找到适合需求的 Python 库?
6.学习使用了这些Python库,此时的你应该是对Python十分满意,也十分激动能遇到这样的语言,就是这个时候不妨开始学习Python数据结构与算法,Python设计模式,这是你进一步学习的一个重要步骤:faif/python-patterns
7.当度过艰难的第六步,此时选择你要研究的方向
(二)一些Python免费课程推荐
以下都为免费
1.python零基础相关
适用人群:Python零基础的初学者、Web开发程序员、运维人员、有志于从事互联网行业以及各领域应用Python的人群
![](https://img.haomeiwen.com/i12288886/6ded0f5ec4e97c70.png)
Ø 疯狂的Python:快速入门精讲
Ø 零基础入门学习Python
Ø 玩转Python语言
Ø Python语言程序设计
Ø 程序设计入门
Ø 可汗学院公开课:计算机科学
Ø python 入门到精通
Ø Python交互式编程入门的课程主页
Ø Python交互编程入门(第2部分)的课程主页
2.python web方向
3.python爬虫
4.python数据分析方向(三)Python爬虫需要哪些知识?
要学会使用Python爬取网页信息无外乎以下几点内容:
1、要会Python
2、知道网页信息如何呈现
3、了解网页信息如何产生
4、学会如何提取网页信息
第一步Python是工具,所以你必须熟练掌握它,要掌握到什么程度呢?如果你只想写一写简单的爬虫,不要炫技不考虑爬虫效率,你只需要掌握:
Ø 数据类型和变量
Ø 字符串和编码
Ø 使用list和tuple
Ø 条件判断、循环
Ø 使用dict和set
你甚至不需要掌握函数、异步、多线程、多进程,当然如果想要提高自己小爬虫的爬虫效率,提高数据的精确性,那么记住最好的方式是去系统的学习一遍Python,去哪儿学习?Python教程
假设已经熟悉了最基础的Python知识,那么进入第二步:知道网页信息如何呈现?你首先要知道所需要抓取的数据是怎样的呈现的,就像是你要学做一幅画,在开始之前你要知道这幅画是用什么画出来的,铅笔还是水彩笔...可能种类是多样的,但是放到网页信息来说这儿只有两种呈现方式:
1、HTML (HTML 简介)
2、JSON (JSON 简介)
HTML是用来描述网页的一种语言
JSON是一种轻量级的数据交换格式
假设你现在知道了数据是由HTML和JSON呈现出来的,那么我们紧接着第三步:数据怎么来?数据当然是从服务器反馈给你的,为什么要反馈给你?因为你发出了请求。
“Hi~ ,服务器我要这个资源”
“正在传输中...”
“已经收到HTML或者JSON格式的数据”
这个请求是什么请求?要搞清楚这一点你需要了解一下http的基础知识,更加精确来说你需要去了解GET和POST是什么,区别是什么。也许你可以看看这个:浅谈HTTP中Get与Post的区别 - hyddd - 博客园
很高兴你使用的是Python,那么你只需要去掌握好快速上手 - Requests 2.10.0 文档,requests可以帮你模拟发出GET和POST请求,这真是太棒了。
饭菜已经备好,两菜一汤美味佳肴,下面就是好好享受了。现在我们已经拿到了数据,我们需要在这些错乱的数据中提取我们需要的数据,这时候我们有两个选择。
第一招:万能钥匙
Python正则表达式指南 ,再大再乱的内容,哪怕是大海捞针,只要告诉我这个针的样子我都能从茫茫大海中捞出来,强大的正则表达式是你提数据的不二之选。
第二招:笑里藏刀
Beautiful Soup 4.2.0 文档,或许我们有更好的选择,我们把原始数据和我们想要的数据的样子扔个这个Beautifulsoup,然后让它帮我们去寻找,这也是一个不错的方案,但是论灵活性,第二招还是略逊于第一招。
第三招:双剑合璧
最厉害的招式莫过于结合第一招和第二招了,打破天下无敌手。
基础知识我都会,可是我还是写不了一个爬虫啊!
客观别急,这还没完。
以下这些项目,你拿来学习学习练练手。
一些教学项目你值得拥有:
Ø 03. 豆瓣电影TOP250
Ø 04. 另一种抓取方式
四)Python爬虫进阶
爬虫无非分为这几块:分析目标、下载页面、解析页面、存储内容,其中下载页面不提。
1. 分析目标
所谓分析就是首先你要知道你需要抓取的数据来自哪里?怎么来?普通的网站一个简单的POST或者GET请求,不加密不反爬,几行代码就能模拟出来,这是最基本的,进阶就是学会分析一些复杂的目标,比如说:淘宝、新浪微博登陆以及网易云的评论信息等等。
2. 解析页面
解析页面主要是选择什么库或者那些库结合能使解析速度更快,可能你一开始你通过种种地方了解到了bs库,于是你对这个库很痴迷,以后只要写爬虫,总是先写上:
import requests
from bs4 import BeautifulSoup
当然bs已经很优秀了,但是并不代表可以用正则表达式解析的页面还需要使用bs,也不代表使用lxml能解决的还要动用bs,所以这些解析库的速度是你在进阶时要考虑的问题。
3. 存储内容
刚开始学爬虫,一般爬取的结果只是打印出来,最后把在终端输出的结果复制粘贴保存就好了;后来发现麻烦会用上xlwt/openpyxl/csv的把存储内容写入表格,再后来使用数据库sqlite/mysql/neo4j只要调用了库都很简单,当然这是入门。
进阶要开始学习如何选择合适的数据库,或者存储方式。当爬取的内容过千万的时候,如何设计使存储速度更快,比如说当既有人物关系又有人物关系的时候,一定会用neo4j来存储关系,myslq用来存储用户信息,这样分开是因为如果信息全部存入neo4j,后期的存储速度经十分的慢。
当你每个步骤都能做到很优秀的时候,你应该考虑如何组合这四个步骤,使你的爬虫达到效率最高,也就是所谓的爬虫策略问题,爬虫策略学习不是一朝一夕的事情,建议多看看一些比较优秀的爬虫的设计方案,比如说Scrapy。
(五)Python爬虫面试指南
前段时间快要毕业,而我又不想找自己的老本行Java开发了,所以面了很多Python爬虫岗位。因为我在南京上学,所以我一开始只是在南京投了简历,我一共面试了十几家企业,其中只有一家没有给我发offer,其他企业都愿意给到10K的薪资,不要拿南京的薪资水平和北上深的薪资水平比较,结合面试常问的问题类型说一说我的心得体会。
第一点:Python
因为面试的是Python爬虫岗位,面试官大多数会考察面试者的基础的Python知识,包括但不限于:
Ø Python2.x与Python3.x的区别
Ø Python的装饰器
第二点:数据结构与算法
数据结构与算法是对面试者尤其是校招生面试的一个很重要的点,当然小公司不会太在意这些
第三点:Python爬虫
最重要也是最关键的一点当然是你的Python爬虫相关的知识与经验储备,这通常也是面试官考察的重点,包括但不限于:
Ø 你遇到过的反爬虫的策略有哪些?
Ø 你常用的反反爬虫的方案有哪些?
Ø 你用过多线程和异步吗?除此之外你还用过什么方法来提高爬虫效率?
第四点:爬虫相关的项目经验
(六)Python如何进阶
很多人在学习编程之初都会碰到这种问题:学会了基础的语法了,但是还是做不了项目,不知道如何下手。
当初,我学习C的时候是这样、Java的时候是这样、Python的时候也是这样,其实不管什么语言、什么知识都是这样:理论基础知识 - 能动手做项目是有一道鸿沟的。
那么如何突破这条鸿沟?中间的桥梁是什么?
其实题主自己已经回答出来了:照抄!
所谓照抄前提是有样本。
1首先找到一些简单易上手的项目,这些项目大多散落在Python实践相关的书籍中、Github上,这些实战项目知乎上都有很多推荐。
2.大多数的Python书里面(除了纯理论书)都是有小项目的,而且书的一个优点是它会一步一步解释这样做的原因
(八)Python爬虫入门
想写这么一篇文章,但是知乎社区爬虫大神很多,光是整理他们的答案就够我这篇文章的内容了。对于我个人来说我更喜欢那种非常实用的教程,这种教程对于想直接上手爬虫做一些小东西的朋友来说是极好的。
用一个精彩的回答作为开头:如何入门 Python 爬虫? - 谢科的回答
如果你想学习编程,但是找不到学习路径和资源,欢迎关注专栏:学习编程
第一:Python爬虫学习系列教程
Python版本:2.7 或3.7(十)Python面试概念和代码
(一)、这两个参数是什么意思:*args,**kwargs?我们为什么要使用它们?
答:如果我们不确定往一个函数中传入多少参数,或者我们希望以元组(tuple)或者列表(list)的形式传参数的时候,我们可以使用*args(单星号)。如果我们不知道往函数中传递多少个关键词参数或者想传入字典的值作为关键词参数的时候我们可以使用**kwargs(双星号),args、kwargs两个标识符是约定俗成的用法。
另一种答法:当函数的参数前面有一个星号*号的时候表示这是一个可变的位置参数,两个星号**表示这个是一个可变的关键词参数。星号*把序列或者集合解包(unpack)成位置参数,两个星号**把字典解包成关键词参数。
(二)、谈一谈Python的装饰器(decorator)
装饰器本质上是一个Python函数,它可以让其它函数在不作任何变动的情况下增加额外功能,装饰器的返回值也是一个函数对象。它经常用于有切面需求的场景。比如:插入日志、性能测试、事务处理、缓存、权限校验等。有了装饰器我们就可以抽离出大量的与函数功能无关的雷同代码进行重用。
有关于具体的装饰器的用法看这里:装饰器 - 廖雪峰的官方网站
(三)、简要描述Python的垃圾回收机制(garbage collection)
Python中的垃圾回收是以引用计数为主,标记-清除和分代收集为辅。
引用计数:Python在内存中存储每个对象的引用计数,如果计数变成0,该对象就会消失,分配给该对象的内存就会释放出来。
标记-清除:一些容器对象,比如list、dict、tuple,instance等可能会出现引用循环,对于这些循环,垃圾回收器会定时回收这些循环(对象之间通过引用(指针)连在一起,构成一个有向图,对象构成这个有向图的节点,而引用关系构成这个有向图的边)。
分代收集:Python把内存根据对象存活时间划分为三代,对象创建之后,垃圾回收器会分配它们所属的代。每个对象都会被分配一个代,而被分配更年轻的代是被优先处理的,因此越晚创建的对象越容易被回收。
四)、Python多线程(multi-threading)。这是个好主意吗
![](https://img.haomeiwen.com/i12288886/4884060a06cf8efc.png)
![](https://img.haomeiwen.com/i12288886/4b4995f10f124c38.png)
![](https://img.haomeiwen.com/i12288886/5260a12cf5c15abc.png)
![](https://img.haomeiwen.com/i12288886/36e81ea19038dbb8.png)
![](https://img.haomeiwen.com/i12288886/0ab6ac52f9c3b6f3.png)
![](https://img.haomeiwen.com/i12288886/ca34a0e26f4d3912.png)
关注微信公众号:程序员大牛,拿走干货Python