Esay Blog

喜欢简单而有序的生活 & 探索新的事物

豆瓣图书和电影列表

| Comments

一年以前写的抓取自己豆瓣电影和图书列表的脚本。

[抓取代码] (getDoubanList.py) download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
#!/usr/local/bin/python
# -*- coding: utf-8 -*-
# auther: jeswang
# finished time: 2012.2.4

import os
import stat
import urllib2
import urllib
import time,datetime
import threading
import string
from time import sleep
from BeautifulSoup import *


BOOK_HEAD = '''---
layout: page
title: "Book"
comments: true
sharing: true
footer: false
---

'''

MOVIE_HEAD = '''---
layout: page
title: "Moive"
comments: true
sharing: true
footer: false
---

'''

def getList(base_url, list_kind):
    c=urllib2.urlopen(base_url+list_kind+'?sort=time&start=0&filter=all&mode=grid&tags_sort=count')
    soup = BeautifulSoup(c.read())
    c.close()
    totalNumber =soup.find('span', { "class" : "subject-num"}).contents[0]
    separator = "/"
#    print totalNumber
    totalNumber = totalNumber[totalNumber.find(separator) + 7:]
    totalNumber = string.atoi(totalNumber)
#    print totalNumber

    bookList = soup.findAll('a', { "class" : "nbg"})
#    print bookList

    beginNumber = 15
    while totalNumber-15 > 0:
        c = urllib2.urlopen(base_url+list_kind+'?sort=time&start='+str(beginNumber)+'&filter=all&mode=grid&tags_sort=count')
        soup = BeautifulSoup(c.read())
        c.close()
        bookList = bookList + soup.findAll('a', { "class" : "nbg"})
        totalNumber = totalNumber - 15
        beginNumber += 15
    return bookList




if __name__ == "__main__":

    book_file = file('../octopress/source/book/index.markdown', 'w')
    book_file.write(BOOK_HEAD)
    print "获取正在读的书籍列表"
    base_url = 'http://book.douban.com/people/dowang/'
    book_file.write('''## 在读的书
''')

    for book in getList(base_url, 'do'):
        book_file.write(str(book).replace('spic','mpic')+' ')

    print "读过的书籍列表"
    base_url = 'http://book.douban.com/people/dowang/'
    book_file.write('''
## 读过的书
''')

    for book in getList(base_url, 'collect'):
        book_file.write(str(book).replace('spic','mpic')+' ')

    print "想要的书籍列表"
    base_url = 'http://book.douban.com/people/dowang/'
    book_file.write('''
## 想要读的书
''')

    for book in getList(base_url, 'wish'):
        book_file.write(str(book).replace('spic','mpic')+' ')

    movie_file = file('../octopress/source/movie/index.markdown', 'w')
    movie_file.write(MOVIE_HEAD)

    print "获取正在看的电影列表"
    base_url = 'http://movie.douban.com/people/dowang/'
    movie_file.write('''## 在看的电影
''')

    for book in getList(base_url, 'do'):
        movie_file.write(str(book).replace('spic','mpic')+' ')

    print "看过的电影列表"
    movie_file.write('''
## 看过的电影
''')

    for book in getList(base_url, 'collect'):
        movie_file.write(str(book).replace('spic','mpic')+' ')

    print "想要的电影列表"
    movie_file.write('''
## 想要看的电影
''')

    for book in getList(base_url, 'wish'):
        movie_file.write(str(book).replace('spic','mpic')+' ')

    print "Finish!"

使用方法:

  • 要把文件保存在和Octopress同级的另一个目录下

image-1

  • 修改代码中的dowang为你的豆瓣名字。
  • 给Octopress加上两个链接,方便访问。

定期运行一下,就可以让Octopress有你自己的豆瓣列表了。

我的VIM配置文件

| Comments

这学期的课都上完了,终于有时间和代码相处了。

好久没有使用vim,有些快捷键的淡忘了。

整理一下配置文件,重新来过。

我的VIM配置文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
inoremap <C-e> <END>
inoremap <C-a> <HOME>
inoremap <C-f> <Right>
inoremap <C-b> <Left>

nmap <Left> :bp<CR>
nmap <Right> :bn<CR>
nmap <F4> :bd<CR>

set nocompatible
syntax on
filetype off
colorscheme desert
set nu
set mouse=a
set rtp+=~/.vim/bundle/vundle/
call vundle#rc()
Bundle 'gmarik/vundle'
filetype plugin indent on

Bundle 'Lokaltog/vim-powerline'
set nocompatible

set laststatus=2
set t_Co=256

Bundle 'ZenCoding.vim'

Bundle 'a.vim'
Bundle 'mileszs/ack.vim'
Bundle 'cocoa.vim'
Bundle 'FencView.vim'
Bundle 'Markdown-syntax'
Bundle 'unite.vim'
Bundle 'Syntastic'

Bundle 'Tagbar'
let g:tagbar_ctags_bin='/usr/local/bin/ctags'
let g:tagbar_width=26

Bundle 'taglist.vim'
Bundle 'taglist-plus'
let Tlist_Use_Right_Window=1
let Tlist_File_Fold_Auto_Close=1
let Tlist_Ctags_Cmd='/usr/local/bin/ctags'

Bundle 'The-NERD-tree'
let NERDTreeShowBookmarks=1

Bundle 'altercation/vim-colors-solarized'
" set background=dark
" colorscheme solarized

Bundle 'neocomplcache'
let g:neocomplcache_enable_at_startup=1
autocmd FileType python setlocal omnifunc=pythoncomplete#Complete

Bundle 'pyflackes'
Bundle 'python_flod'

if has("gui_running")
"    set guifont=Microsoft\ YaHei\ Mono:h16
    set guifont=Monaco:h14
    set guifontwide=Microsoft\ YaHei:h15
    set linespace=2
    set guioptions-=T
    set guioptions-=r
    set guioptions-=L
    set showtabline=1
    set noimd
endif

- EOF -

Octopress新建博客脚本

| Comments

重复性质的准备工作

每次用Octopress写博客,都要

  • 打开终端,转到Octopress的目录
  • 敲入rake 文章名字
  • 打开创建的文件开始写Blog
  • 在终端输入,rake preview
  • 浏览器中看到输出的样式

这样重复机械性的工作,不仅增加了写博客的准备时间,也增加了开始写博客的心理代价。

Mac下的解决方案

Shell反反复复只写过一些简单的例子,而且也忘得差不多了。写几行程序刚好可以再复习一下相关内容,就写了一段Shell来完成上面的工作。代码如下:

简化创建博客的流程
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
export BLOG="/Path/to/octopress"

function post()
{
    BLOG_NAME=$1
    BLOG_ADDR=$BLOG
    cd $BLOG_ADDR/source/_posts;

    rake new_post\[${BLOG_NAME}\];

    open $BLOG_ADDR/source/_posts
    open $BLOG_ADDR/source/images

    NEW_POST_NAME=`ls -t|head -1`
    echo $NEW_POST_NAME
    open -a Marked $NEW_POST_NAME
    open -a Sublime\ Text\ 2 $NEW_POST_NAME
    cd -
}

这样,每次写博客,只需要在命令行输入 post 文章名字 就行了。

- EOF -

2012年读书总结

| Comments

2012年是进入研究生学习的第一个半年,尽管了解了很多学习的方向和名词,但是认真阅读的时间很少,深入思考的时间也很少。看的书多是娱乐休闲,好几本有难度需要思考总结的图书都没有完整看完,很惭愧。

决心要在2013年,有一个完整的,有总结的读书计划。读更多的有益之书,读更多英文原著。

Stay Hungry, Stay Foolish

| Comments

最近两周的生活有点不太规律,总是在被任务追着走,效率不高,连每天做了什么都无法记录。问题出在哪里?

~~~~

这两天看到了两次关于“初心”的议论:

第一次,是在柴静对采访李安时,李安提到的。他没有说初心这个词,他说的是纯洁。我想,李安说的纯洁,是指跟随自己内心的想法去拍摄和表达,是指对于电影中很纯粹的东西的追求,是指《少年派》中派,或者是李安自己,对人性和信仰的理解和追问。

纯洁,就是不管你曾经做过什么,你如今擅长什么,放下内心对于世界的偏见,不受过往经验的影响,像一个婴儿一样体验这个世界,尽情地发现自己,表达自己。

第二次是是在知乎上看到有人提问:什么是“初心”?

答案有很多,大致都是在说,所谓“初心”,就是“初学者的心”。看到这个答案,我一下就明白了,这正是我很长时间以来所缺少的。

作为一个学计算机的人,免不了学习很多技术。初学这些技术时,兴致盎然,再后来这种好奇越加衰减,最终就懒得再去看了,转而去学什么新的东西了。结果是,并没有什么真正深入学习的东西。

其实,这些技术之中有很多值得推敲,让人着迷的细节,如果能保持一颗好奇之心,认真去寻找茫茫草原之上的野花,静静地体验逐渐圆满的感觉,不也是一件美事?

我原来不是很理解乔布斯在斯坦福毕业典礼上说的最后一句话:

Stay hungry, stay foolish.

现在我懂了,这句话讲了一个朴素而深刻的道理:放下从前发生的事情,把心掏空,用空空的心重新去认识这个世界,重新认识我们自己。

Stay hungry, stay foolish.

- EOF -

《影响力》我读到了什么?

| Comments

为什么读?

假期里,认真地读了李笑来老师的《把时间当朋友》和刘未鹏的《暗时间》(准确的说是一部分),书里都提到了《影响力》这本书。然后就用了大约1周的时间,在公交车上仔细的读了一下。虽然读的断断续续的,但是读的时候都很投入,很被书里的内容吸引,内容上也很受启发。

读到了什么?

我发觉我更关心的是其中对自身和他人看法的方面,而不是如何获利。关于对自身和他人的看法,给我感触最深的有这么两点:

Zen-Coding

| Comments

测试一下列表的显示样式。

各种元素代表的含义:

元素 代表的含义以及例子
E 元素名 (div, p)
E#id 带id的元素 (div#content, p#intro, span#error)
E.class 带class的元素 (div.header, p.error.critial)id 和 class 可以连写,如: div#content.column.width
E>N 子元素 (div>p, div#footer>p>span)
E+N 兄弟元素 (h1+p, div#header+div#content+div#footer);
E*N 多项元素 (ul#nav>l *5>a)
E$*N 带序号的元素 (ul#nav>li.item-$*5);