随着Python的进一步发展,越来越多的现成的Python的机器学习的算法已经发布出来。为了可以更好地运用这些机器学习的算法,我们有必要对Python有个初步的了解。以下是小编为你整理的python学习心得
Python不同层级的语句之间间隔四个空格缩进, indentation。Python有比较严格的语法结构,需要不同层级的代码之间相差四个空格,不然就不能编译通过。
Python中输出到console是用print,然后接收键盘输入是用raw_input(),示例name = raw_input(What's your name?);
[图片0]
写完程序之后,要用不同的输入来测试写的程序是否正确。
变量Variables,用于存储后续可能用到的数据
数据类型Data Type,包含数值和布尔值
注释,当行注释用#,多行注释"""开始"""结束,如下图所示
基本数学运算符,+,-,*,/
指数运算符,**
取余运算符,%
如何选择版本
Python 和 通常已经内置在现代 Linux 发行版中,你可以立刻使用它。你可以终端模拟器中输入 "python" 或 "python3"来进入 Python shell, 并输入 "quit()" 退出。
如果你希望在键入 "python" 时使用 Python 而不是 ,你可以像下面一样更改对应的符号链接:
顺便一提,有一点需要注意:尽管 Python 仍旧被使用,但它并不会被积极维护。因此,你可能要考虑像上面指示的那样来切换到 。 和 的语法有一些不同,我们会在这个系列文章中使用后者。
另一个在 Linux 中使用 Python 的方法是通过 IDLE (Python 集成开发环境),这是一个为编写 Python 代码而生的图形用户界面。在安装它之前,你最好查看一下适用于你的 Linux 发行版的 IDLE 可用版本。
然后,你可以像下面一样安装它:
$ sudo aptitude install idle-
安装成功后,你会看到 IDLE 的运行画面。它很像 Python shell,但是你可以用它做更多 Python shell 做不了的事。
集合的与操作
我们可以看到集合输出的效果会有一个set表示。
aaa = [1,2,3]bbb = [3,4,5,6]a_a = set(aaa)b_b = set(bbb)
集合中并集的表示:
k = a_a | b_b
print k
[图片1]
使用一个| 线表示 ,求出2个数的并集。
vip = (b_b) #并集print vip
集合中交集的表示 使用 ^ 表示求交集
k = a_a ^ b_b #交集合
print ((b_b)) # 求交!!!!
集合中求出不同项目的结果
print ((b_b))
需要单独说明的是求的是自己的和他人的不同,不是两者一起的不同
掌握常见的反爬策略与反爬处理策略
反爬,是相对于网站方来说的,对方不想给你爬他站点的数据,所以进行了一些限制,这就是反爬。
反爬处理,是相对于爬虫方来说的,在对方进行了反爬策略之后,你还想爬相应的数据,就需要有相应的攻克手段,这个时候,就需要进行反爬处理。
事实上,反爬以及反爬处理都有一些基本的套路,万变不离其宗,这些后面作者会具体提到,感兴趣的可以关注。
常见的反爬策略主要有:
IP限制
UA限制
cookie限制
资源随机化存储
动态加载技术
对应的反爬处理手段主要有:
IP代理池技术
用户代理池技术
cookie保存与处理
自动触发技术
抓包分析技术+自动触发技术
这些大家在此先有一个基本的思路印象即可,后面都会具体通过实战案例去介绍。
掌握PhantomJS、Selenium等工具的使用
有一些站点,通过常规的爬虫很难去进行爬取,这个时候,你需要借助一些工具模块进行,比如PhantomJS、Selenium等,所以,你还需要掌握PhantomJS、Selenium等工具的常规使用方法。
掌握分布式爬虫技术与数据去重技术
如果你已经学习或者研究到到了这里,那么恭喜你,相信现在你爬任何网站都已经不是问题了,反爬对你来说也只是一道形同虚设的墙而已了。
但是,如果要爬取的资源非常非常多,靠一个单机爬虫去跑,仍然无法达到你的目的,因为太慢了。
所以,这个时候,你还应当掌握一种技术,就是分布式爬虫技术,分布式爬虫的架构手段有很多,你可以依据真实的服务器集群进行,也可以依据虚拟化的多台服务器进行,你可以采用urllib+redis分布式架构手段,也可以采用Scrapy+redis架构手段,都没关系,关键是,你可以将爬虫任务部署到多台服务器中就OK。
至于数据去重技术,简单来说,目的就是要去除重复数据,如果数据量小,直接采用数据库的数据约束进行实现,如果数据量很大,建议采用布隆过滤器实现数据去重即可,布隆过滤器的实现在Python中也是不难的。