currently reading articles under python

python scrapy爬虫练手

简介

初步了解和实践了一下用python写个爬虫,有现成的库,学起来的方便。

用的爬虫框架是:scrapy 官网链接

参考的网页是:Segmentfault.com的这篇文章

我的代码存放在:GitHub link

新增加的技能点

基本了解scrapy的用法,爬虫的最基本的思路

python 3的语法里,print是一定要有括号的

xpath基础知识掌握和应用,简单的抓取用xpath基本够了,不过以后要来高精专的字符提取,还是得精通正则

python yield关键字的了解,它通常会出现在某个generator函数里,当这个generator函数执行的时候,遇到yield表达式,......

Python爬糗百热门20条并邮件分发+wxPython简易GUI+py2app转成可执行文件

学了一阵子Python,拿来做个什么有意思的东西呢?爬糗百好了,爬到的内容,邮件分发出去。

然后又啃了两天的wxpython,做了个简易的邮件管理界面,可以在这里增加或者删除邮件,并且一键爬虫发送。

最后,索性封装成APP吧,又试了一把py2app,简单好用。

由于是让用户自行添加和删除邮箱,所以程序一定要兼顾到各种情况:比如输入的邮箱格式不合法,输入的邮箱里包含中文字符,分隔符不对,删除了全部邮箱然后又要发邮件等问题。

Python @property装饰器

廖老师的博客链接如下,一开始没看懂,搜罗了一大堆,有点感觉了

点击打开链接

其实@property装饰器就是把class的方法变成属性,见下面这个class,它有两个私有属性。

通过第一个@property和第二个@score.setter,我们可以像访问属性一样来调用类里面的方法,例如:

s=Student(“David”,99)

s.score = 100

至于用这种装饰器的原因,我想,就是为了简洁吧,直接用属性赋值的方式,执行了方法。Python 肯定是个懒人发明的。

class Student(object):

def __init__(......

Python装饰器有趣实例探究

廖老师的教程实在太高深,没弄懂,点击打开链接

def deco_functionNeedDoc(func):
    if func.__doc__ == None :
        print func, "has no __doc__, it's a bad habit."
    else:
        print func, ':', func.__doc__, '.'
    return func
@deco_functionNeedDoc
def f():
    print 'f() Do something'
@deco_functionNeedDoc
def g():
    'I have a __doc__'
    print 'g() Do something'
f()
g()
print f
print g</pre>

这段代码打印结果如下:

<function f at 0x0238F930> has no**doc**, it&#8217;s a bad habit.

<function g at 0x0238F8B0> : I have a **doc** .f() Do somethingg() Do something

<function f at 0x0238F930>

<function g at 0x0238F8B0>

当时我就晕菜了,想了很久,原来在@装饰器函数的时候就会调用装饰器,装饰器函数return func,而func就是传进去的参数f。这个时候把代码改改。

That Cloud Services of CI

When we find some open source projects on github( e.g. ruby-cucumber). We can found some green icon to display the status of the project on the README.md file. Like these:

x

, it looks very attractive to me. Especially the build passing status and the code coverage. Even I’m not working for the CI in our company, I’m still interested in it.

When push some code to my code base, then automatically building the code, running tests, and showing the build status & code coverage real-time on the readme page, That’s COOL! When I look into more, the travis-ci.org and the coveralls.io are free for open source project on github.

Let me have a try.

Since recently I’m learning python. First, I created a helloworldpython project on my github.

The Travis-CI

it supports most popular languages. After signing in it with github account, open the service for my helloworld project. After the authentication for travis-ci, it will add an service for the project, we can found that on the setting of the project:

我要用python把leetcodeOJ算法题刷一遍。

给自己挖下一个坑,看看多久能摆平,平常吧,对算法有些兴趣,却总是没有持续的投入时间去学习。这次为了考验自己,看看到底有多强的执行力。leetcodeOJ难度对我来说刚刚好,不会难到我根本搞不定,也不会容易到每道题都能一次切过。在github上建立一个工程,https://github.com/yyq/LeetCodeOJ-python,看看多少时间能完成。完成顺序,就按照人家网站上的题号从小到大来吧。

这里写下这篇文章,也顺便记录一下,在切题过程中遇到的坑,以及学习心得,感想。

第四题。两个有序数组找中位数问题,时间复杂度log(n), 注意考虑奇偶性的情况,因为这个重复提交了好几遍才AC......