最近工作上有额外的抓取数据和发送数据的需求,没有业务处理,后期可能需要对接其他平台的数据,不大想用java去做,正好想学点其他东西,又听闻python在这方面很有优势,百闻不如一见,就想去学学看,于是前后大概花了两天时间来学习。果然!用着很爽,是用java从来没有的体验,我将学习步骤简单记下,纯粹是新手自学,不当之处还望高手指出,有好用、简单的框架希望大家也推荐下。
1. 了解语法
初学一门语言,可以先熟悉下该语言的语法,我先上官网去看了下初学教程,然后上jetbrains上下载Python IDEA,python有关的IDEA有好几个,其中有个PyCharm Edu,是给初学python者使用的,它里面是什么呢?是50道写好的测试题,我大概用了2小时将它做完,仔细看完了每题介绍的语法,对于基本语法差不多就有些了解了。
2. 接下来怎么学?
前段时间看了《我编程,我快乐》——程序员的修炼之道,里面作者讲了他对学习一门新语言的看法,寻找良师对于学习是很有帮助的,作者讲到在爵士音乐界,人们普遍会从师,当别人问他你的老师是谁的时候,他们一般都会回答是某某,但如果你问一个编程人员他们的老师是谁的时候,他们会回头一脸茫然的反问你“是谁?”。作为编程人员找老师确实有些难。。但上github上找优秀框架却是不难的,于是我上去搜了下python相关的项目。
3. scrapy与requests
从他们各自的框架介绍来看,scrapy更专注于从网站提取数据,requests如其名,是个很好用的HTTP库。而我当前的需求是做一个定时调用api获取数据,再通过api发送数据的东西,所以我选择使用requests。 简单几行代码就可以搞定请求,觉得很爽:
import requests# 获取天气r = requests.get('http://www.weather.com.cn/data/sk/101020100.html')print(r.status_code)复制代码
官方网站:http://docs.python-requests.org/en/master/
4. pip与pipenv
pipenv的好处是创建一个完全独立的,干净的环境,也即在它里面你可以做任何事情,但不会影响其他的python项目,(读requests的官方文档,它建议使用pipenv而不用pip),实际上作为初学者来说有没必要立即使用pipenv?我觉得还是先用用pip会比较好点,等实际有需要独立环境时再使用pipenv,初学时不太会有多高的要求,以实用方便为主(我再看了其他几个star比较高的项目,没有要求用pipenv)。
5. peewee
搞定了数据的请求之后,需要将数据存到数据库,这里我用的是mysql,再上github上搜索python mysql相关的项目,最终决定用peewee,没有太多的对比多个框架,简单来讲就是觉得好用,而且它有自带的generator——pwiz,可以通过一行命令直接生成指定数据库的所有表对应的models,增删改查也很简单。
这里推荐入门看一篇简单的文章 http://www.jianshu.com/p/29d821774474 作者还顺带写了例子,可以很好的参考,更全的语法则可以参考官方文档:http://docs.peewee-orm.com/en/latest/peewee/querying.html#query-operators
6. 定时器
好了,到此数据获取,发送,存储都有了着落,目的差不多就快达到了,最后再设一个定时器,定时去执行任务就好了,这里用了schedule,用起来也很简单,几行代码:
import scheduleimport timedef job(): print("I'm working...")schedule.every(10).minutes.do(job)schedule.every().hour.do(job)schedule.every().day.at("10:30").do(job)schedule.every().monday.do(job)schedule.every().wednesday.at("13:15").do(job)while True: schedule.run_pending() time.sleep(1)复制代码
可以根据实际需求选用调用哪种方式
官方网站:https://pypi.python.org/pypi/schedule
感言
通过这两天的学习,对于python只能是勉强能用,但我已很满足,后期还会用python去做点东西,这是我继看完《我编程,我快乐》——程序员的修炼之道后认真去实践的第一门语言。感觉以前一直为一种想法所桎梏,是不是一定要先精通一门语言才去学其他语言的问题,后来认识到想要精通谈何容易,谁又敢轻言自己精通某某语言,怕是会分分钟被打脸,有朋友说,某些简历筛选的人看到简历上写精通会直接淘汰掉,总之精通不是容易的事。所以既然很难精通,也不知道何时能精通,那么这层先后顺序就没什么必要了,通过去学习不同的语言,也许还能触类旁通,有不一样的收获。
学习新的东西是否有必要去啃完该方面的经典大部头?这个是我以前的固有方法,所以学习新东西很难开头,因为没有什么利益,也没人带领,也不那么有趣,几乎不可能啃得下来。就像我读历史总想从《春秋》《史记》开始读起,讲真,真的难啃,最近才开始读《中国通史》,这次我不再看得非常仔细,结果很快就读完了以前很久都读不完的内容,在读书的质量方面,我发现比之十分认真的去读也没有多大差别,于是认真反思了自己之前读书的方式,发现,读书不一定一开始就要努力去记住所有,也许可以先了解一个大概,再根据兴趣爱好做深入的了解,一开始就想深入了解往往会打击自己的积极性。
若是此后再发现这种方法有问题,那就再寻找合适的方法。有许多好用的方法,但并不一定适合所有人,但我们不能以此为借口而去否定我们不知道的方法,有的方法还是值得一试的,我们快点去体验就行,觉得好,就更多的去了解、实践,觉得不好,就再去寻找,总结。
学而时习之,温故而知新,三省吾身,全在自身去体察;日新,月新,也全在自我去改进。