使用python第三方框架requests多线程获取数据

以前一直使用python的urllib2来抓取页面采集内容,偶然发现python有一个非常好用的封装好的库requests可以省去很多事。具体安装和使用教程可以直接参考官方文档:http://au81.com/KhfDe7。简单的写了一个通过requests多线程获取页面数据的代码。不贴所有代码了,代码下载:https://gist.github.com/2215568如图:

精彩继续

Python的staticmethod和classmethod装饰器用法、区别

Python的staticmethod和classmethod装饰器会迷惑一些人,有的人总会纠结什么时候用怎么用。俺写了个简单的例子,很清楚就能看出来这几种方法的区别。什么时候用怎么用就不用再多说了吧。#-*-coding:utf-8-*-classA(object):deffoo(self,x):print"executingfoo(%s,%s)"%(self,x)@classmethoddefclass_foo(cls,x):print"executingclass_foo(%s,%s)"%(cls,x)cls().foo(x)@staticmethoddefstatic_foo(x):print"executingstatic_foo(%s)"%xa=A()a.foo(1)print'1'a.class_foo(1)print'2'A.class_foo(1)print'3'a.st...

精彩继续

Python版本短网址还原脚本

看了别人写的一个PHP版本的短网址还原代码,感慨下PHP的强大,但这么简单的一个功能写了好长一段代码。PHP版本代码如图:尝试用Python重写了一下,发现其实这个功能只需要四行代码就可以实现。再次感叹下Python的方便:#-*-coding:utf-8-*-importurllib2,socketrequest=urllib2.urlopen(urllib2.Request(url='http://t.cn/zOyhXrZ',headers={'User-Agent':'Mozilla/8.0(compatible;MSIE8.0;Windows7)'}))socket.setdefaulttimeout(5)printrequest.url

精彩继续

异常简单的一个代码生成器(python)

首先上一段生成的代码,很简单。但数据量很大时候也可以省下一小部分的工作量。#-*-coding:utf-8-*-fromcore.dal.base_handlerimportBaseHandlerclassGroupsHandler(BaseHandler):defselect(self):returnself.db.query("SELECT`g_id`,`g_name`,`create_time`,`status`FROM`groups`ORDERBY`g_id`DESC")defdelete(self,id):returnself.db.execute("DELETEFROM`groups`WHERE`g_id`=%s",id)definsert(self,g_name):returnself.db.execute("INSERTINTO`groups`(`g_name`)VALUE...

精彩继续

python下载数据

亲爱的BSSN给了一个flash游戏的数据库,还给了一个通过wget下载其中flash游戏数据的教程。测试中发现那个教程中wget方式下载数据经常下载到一半碰到出错或者什么原因给自动退出了。趁这两天换工作有点时间,操刀python写了一段小脚本:#-*-coding:utf-8-*-importos.pathimporturllib2defheader(url):headers={'User-Agent':'Mozilla/5.0(Windows;U;WindowsNT6.1;en-US;rv:1.9.1.6)Gecko/20091201Firefox/3.5.6','Referer':'http://www.xxx.net/'}req=urllib2.Request(url=url,headers=headers)result=urllib2.urlopen(req).read()ret...

精彩继续

python所谓文艺短网址生成方式代码

最近都没有写什么python和php的代码,工作非常充实,晚上也没有什么精神继续写代码。今天翻到一段写生成短网址的算法blog,发现俺用的是最2B的随机数方式……为了表示不那么2B,特意写了段生产短地址的在该文章中所写的文艺代码:defshortByHex(url):'''url缩短'''importhashlib_seed="abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"_hex=hashlib.md5(url).hexdigest()_hexLen=len(_hex)_subHexLen=_hexLen/8_output=[]foriinxrange(0,_subHexLen):_subHex=_hex[i*8:i*8+8]_subHex=0x3FFFFFFF&int(1*('0x%s'%_subHex),...

精彩继续

python的functools.partial用法解释

在使用bottle的jinja2_template过程中碰到了一个自定义filter的问题,其中bottle关于jinja2_template的定义是这样的:jinja2_template=functools.partial(template,template_adapter=Jinja2Template)在.NET中class也是有partial这个概念的,所以从字面理解,jinja2_template应该是template和后边template_adapter=Jinja2Template这个参数之和的结果。官方的解释为:Returnanewpartialobjectwhichwhencalledwillbehavelikefunccalledwiththepositionalargumentsargsandkeywordargumentskeywords.官方给的例子:fromfun...

精彩继续

python property用法

property用来设置/读取一个类的属性,今天用到此方法记录一下备忘。官方文档描述如下:property([fget[,fset[,fdel[,doc]]]])classC(object):def__init__(self):self._x=Nonedefgetx(self):returnself._xdefsetx(self,value):self._x=valuedefdelx(self):delself._xx=property(getx,setx,delx,"I'mthe'x'property.")

精彩继续

debian配置Tornado+MySql+nginx环境(附俺的网址缩短代码下载)

最近上线的网址缩短项目是学习Python的练手作,框架采用这一阵比较火热的Tornado。简单写一个配置安装顺序,仅为记录。全部软件均通过apt-get方式安装(Tornado除外)清除无用组件(感谢hostloc坛子的lsylsy2)apt-getupdate&&apt-getupgradeapt-get-ypurgeapache2-*bind9-*xinetdsamba-*nscd-*portmapsendmail-*sasl2-binapt-get-ypurgelynxmemtesterunixodbcodbcinst-*sudotcpdumpttf-*apt-getautoremove&&apt-getclean安装python2.6apt-getinstallpython2.6rm/usr/bin/pythonln-s/usr/bin/python...

精彩继续

Tornado获取客户端IP(补充)

今天发现犯了一个错误,前几天写过一篇“tornado获取客户端IP”,但今天查看数据库中数据时候发现所有的IP均是127.0.0.1(因数据库使用bigint存储,所以数据库中看到IP均是2130706433),在Group中搜索了一下发现Ben以前解释过这个问题BenDarnellTornadosupportsbothx-real-ipandx-forwarded-for,butyouhavetosetxheaders=TrueinyourHTTPServerconstructortohaveitlookateitherofthem.-Ben即tornado支持通过x-real-ip或x-forwarded-for来获取IP,但前提是需要在你的HTTPServer实例中增加xheaders=True参数,如:http_server=tornado.httpserver.HTTPServe...

精彩继续