月度归档:2014年09月

专门的python爬虫框架:scrapy

http://scrapy.org/

竟然有专门的爬虫框架,呵呵。

这里有中文例子:

http://www.cnblogs.com/txw1958/archive/2012/07/16/scrapy-tutorial.html

中文文档:

http://scrapy-chs.readthedocs.org/zh_CN/0.24/

Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。

其最初是为了 页面抓取 (更确切来说, 网络抓取 )所设计的, 也可以应用在获取API所返回的数据(例如 Amazon Associates Web Services ) 或者通用的网络爬虫。

当然,如果想更深入的解析,还是推荐使用lxml 完成那部分工作!

 

Requests: HTTP for Humans 更好使用的http python接口

http://cn.python-requests.org/zh_CN/latest/

在Python的世界里,事情不应该这么麻烦。

原来使用urllib,非常繁琐,现在改成Requests,非常简洁,符合人的操作习惯!

 

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import requests

r = requests.get('https://api.github.com', auth=('user', 'pass'))

print r.status_code
print r.headers['content-type']

# ------
# 200
# 'application/json'

支持的功能
Requests 完全满足如今网络的需求。

国际化域名和 URLs
Keep-Alive & 连接池
持续性的 Cookie 会话
类浏览器式的 SSL 加密认证
基本/精简式的身份认证
优雅的键/值 Cookies
自动解压
Unicode 编码的响应主体
多段文件上传
连接超时
支持 .netrc
适用于 Python 2.6—3.3
安全的线程使用

 

 

pyramid url dispatch 学习

今天学习pyramid中增加路由

新创建工程:
pcreate -s starter mp
在不改变目录结构的情况下,
在__init__.py中添加:
config.add_route(‘test’,’/test/’)

在view.py文件中添加:
@view_config(route_name=’test’, renderer=’templates/mytemplate.pt’)
def test_view(request):
return {‘project': ‘mp of test’}
然后浏览器测试:http://a.zqfx.org:6543/test/

测试通过,学习结束。

碰到的问题是:
刚开始修改后,系统一直提示
The resource could not be found.

/test/

就好像没做修改一样。而事实上已经在__init__.py中加上了两句:
config.add_view(‘test_view’,route_name=’test’)
config.add_route(‘test’,’/test/’)

于是重启系统:
pserve mp/development.ini
发现报错,ImportError: No module named ‘test_view’
于是将原来写的这句注释掉: config.add_view(‘test_view’,route_name=’test’)

再启动,就ok了

另外为什么自己修改之后系统没显示呢? 我认为是启动时没有加上–reload
也就是学习时应该这样启动:
pserve mp/development.ini –reload

 

下午再进行测试的时候,发现http://a.zqfx.org:6543/test/ 也是404,这可太奇怪了,因为上午是好的呀!

后来检查代码,才发现:

@view_config(route_name=’test’, renderer=’templates/mytemplate.pt’)
def test_view(request):
return {‘project': ‘mp of test’}

@view_config(route_name=’test2′, renderer=’templates/mytemplate.pt’)
def test_view(request):
return {‘project': ‘mp of test’}

写了两个test_view,结果导致”test”的路由没有生效,于是修改:

@view_config(route_name=’test’, renderer=’templates/mytemplate.pt’)
def test_view(request):
return {‘project': ‘mp of test’}

@view_config(route_name=’test2′, renderer=’templates/mytemplate.pt’)
def test_view2(request):
return {‘project': ‘mp of test’}

再测试,test页面ok了。

读《哲学家们都干了些什么》 笔记2

叔本华认为,基督教教义中的原罪就是生命意志,基督教鼓励的赎罪精神就是要求人们去克服生命意志。所以基督教比欧洲其他宗教更受欢迎,是因为它认识到生命意志的悲观主义精神,而其它宗教都是乐观主义。

叔本华的学说跟佛教很像,都讲摒弃自己的欲望。叔本华的哲学一半是康德的形而上学,一半是佛教的禁欲观,他把这两者糅合在了一起。

基本上,富于激情的尼采度过的是悲剧的一生。他一生不被人理解,著作无人问津。《查拉图斯特拉如是说》印完之后,别说卖了,送只送送出去七本。

 

读《哲学家们都干了些什么》 笔记

东方哲学,倾向于只用简单的例子来说明一个道理,但浅尝即止,从来很少质疑,很少质疑该道理,也很少质疑该例子,还有中间隐藏的推导。我想这跟秦始皇摆脱不了关系,因为敢质疑的人,都死了;敢质疑的书,都烧了!

相对来说,西方哲学对质疑就比较重视。我想这跟罗马时代的民主有很大的关系。

形而上学指对世界本质的看法。按照翻译过来的中国的字面意思,就是形(态)以上的学问。

二元论,认为世界分为2个部分,一个是我们的心灵,一个是心灵以外的世界。二元论很容易被我们接受。二元论的作用,在于可以帮助我们有效的躲避痛苦,以及为市面上的“成功学”提供了隐含的理论基础。

二元论进一步,我们还可以得到唯我论。唯我论很难被彻底反驳掉,可以让我们变得更坚强。唯我论在逻辑上在理,在感受上则太荒谬了。

 

 

因为使用“谷歌的字体服务器”导致网页响应速度慢问题解决

用pyramid创建的网页速度奇慢,查找原因:
发现在模板文件中有这么一句:
<link href=”${request.static_url(‘mp3:static/theme.css’)}”
rel=”stylesheet”>

其它页面所有元素已经检查了一遍了,都不存在卡速的问题,于是查看
theme.css 代码,发现:

@import url(//fonts.useso.com/css?family=Open+Sans:300,400,600,700);
body {
font-family: “Open Sans”, “Helvetica Neue”, Helvetica, Arial, sans-
serif;
font-weight: 300;
color: #ffffff;
background: #bc2131;
}
原来css里用了谷歌的字体服务器,而因为众所周知而又不能说的原因,谷歌服务器
在内地无法通畅联通,原来就是这里降低了(几十秒到几分钟,导致网页用户体验
完全无法承受)页面速度。

于是进去注释掉了这句话:
/*@import url(//fonts.useso.com/css?
family=Open+Sans:300,400,600,700);*/

再刷新页面,飞一般的感觉!
ps,今天知道了伪春菜
所谓的伪春菜,就是一个桌面的小程式,开发的目的就是能为主人们处理电脑大大
小小的事情,包括报时、检查邮件、聊天、对时、检视CPU的使用度、关心主人的身
体等等,而GHOST的种类应有尽有,每种GHOST的外貌及个性都不一样,不论是你想
要罗莉型、大姐姐型、H型还是兄贵型(笑,任何你意想不到的GHOST应有尽有,还可
以帮GHOST更换SHELL,让他的外型有不同的变换(性格上是不变的)),有如此多魅
力这就是伪春菜吸引人的地方。

另外vi编辑中,一直没有记如何快速到行首和行尾,导致编辑效率较低,今天顺便
记一下了

0---将光标移到行首
$---将光标移到行末
)---将光标移到下一句句首
(---将光标移到上一句句首
}---将光标移到下一段开始处
{---将光标移到下一段开始处
G---将光标移到当前文档的底部

另外网上有朋友提出新的解决方案
奇虎360的开放字体服务替代谷歌字体服务
将Google免费字体库的域名 fonts.googleapis.com 修改为:fonts.useso.com 即可

python3.4 pyramid笔记

从python3.3开始,python内建支持easy_install和类似virtualenv的pyvenv,所以安装要比以前节省很多时间和步骤,比较快的安装方法是:

1 下载python3.4源代码,解压,进入该目录,configure 然后make install (我注意到是自动clean的)

wget https://www.python.org/ftp/python/3.4.2/Python-3.4.2.tgz

tar -xzvf Python-3.4.2.tgz

cd Python-3.4.2

./configure –prefix=$HOME/opt/py34
make install

这个步骤完成后,就已经有了easy_install、pip和pyvenv了

2 用pyvenv建立虚拟环境,然后激活该env,然后安装pyramid就ok了

注意我是将python安装到opt/py34目录里了。

在用户根目录下bash#:

opt/py34/bin/pyvenv env3
source env3/bin/activate
easy_install pyramid

需要注意的是bash acitvate没问题,tcsh则很难activate 。 另现在建议用pip安装,即:

pip install pyramid

安装中碰到的问题:因为是裸机器,没有spenssl,所以一开始easy_install那块是装不上,直接yum install openssl

后来有次安装,pip那里报错pip Ignoring ensurepip failure: pip 1.5.6 requires SSL/TLS,装了openssl也不行,需要 yum install openssl-devel

ps,正在用阿里云,速度果然比国外快啊!

总体而言,我建议root用户先装一个py3,然后进入个人账户创建env虚拟环境,再安装pyramid等。

或者就在个人账户里装py3,再创建env,然后安装pyramid等。