安装pyquery

前篇文章最后有提到pyquery这个东东,终于有时间在vps上简单安装了一下,继续吐槽公司网络的限制不能ssh……有一个文章说可以直接easy_insallpyquery,但实测不能……直接贴俺测试成功的安装脚本wgetftp://xmlsoft.org/libxslt/libxslt-1.1.28.tar.gztarzxflibxslt-1.1.28.tar.gzcdlibxslt-1.1.28./configuremakeinstallcd../wgethttp://lxml.de/files/lxml-3.1.0.tgztarzxflxml-3.1.0.tgzcdlxml-3.1.0pythonsetup.pyinstallcd../wgethttp://pypi.python.org/packages/source/p/pyquery/pyquery-1.2.4.tar.gztar...

精彩继续

Python+Requests抓取中文乱码改进方案

前两天更新了下网址缩短这个项目的requests版本后抓取要缩短的网址title时候乱码的比例大幅上升。但有不想靠降级版本来解决。之前最早开始用Requests做抓取内容工具时候也碰到过一些中文乱码的情况,最后搜索到的Python中文乱码的最常见的解决方案就是重置页面编码importsysreload(sys)sys.setdefaultencoding('utf-8')同样的,俺做网址缩短项目时候抓取要缩短网址的Title时候也是采用这样的方式。但是升级了Requests版本之后出现了大量的GBK编码url的Title无法正常识别的情况。在本地也升级了最新的Requests版本后写了一个函数做了一些测试,发现重置页面默认编码之后虽然抓取到了某些GBK编码的页面内容,抓取后的结果也是unicode格式,但是转换成正常gbk时候出现各种莫名其妙错误。这时候使用r.encoding输出抓取的页...

精彩继续

解决Python自带的json序列化工具不能序列化datetime类型数据问题

Python自带的json.dumps方法序列化数据时候如果格式化的数据中有datetime类型数据时候会提示错误TypeError:datetime.datetime(2012,12,12,15,47,15)isnotJSONserializable搜索出来的解决方案基本都是用Django的DjangoJSONEncoder来解决,为了一个简单的办法引入Django这个大家伙实在有点不知所谓。不过这一点就体现了Django的资料多的优势了正在下决心是否干脆下载了Django的代码去翻出DjangoJSONEncoder这个方法来的时候看到了官方文档中关于json.dumps方法的一个参数(cls)说明:TouseacustomJSONEncodersubclass(e.g.onethatoverridesthedefault()methodtoserializeadditionaltyp...

精彩继续

微信公共平台api Python(bottle)版

微信这个东西估计宅男没几个不熟悉的吧,微信经过这么两年多的发展终于向开放平台跨出了友好的一步。蛋疼的以为微信会出一个详细的api等接口,兴奋不已的去申请了微信公共平台,然后开始找各种api的位置……花费了近一个小时,依然没找到……最后动用Google大杀器,终于找到了这么个链接。我了个去的,没比这还简单的api文档了吧。最让人无法理解的是:居然没有本地开发环境支持,每次都要放在生产环境去调试。最让人欣慰的是:就那么俩方法,生产环境调试几次也就完事了。Python(bottle)版代码如下:#-*-coding:utf-8-*-frombottleimportdebug,default_app,run,get,request,postimportsys,os,time,libxml2dom@get('/')defindex():returnrequest.GET.get('echostr')...

精彩继续

Python从txt文件中读取黑词并简单匹配字符串

下班前同事收到一封邮件说客户在系统中发送短信时候提示有黑词,但因为sp并没有指出具体是冒犯了哪个黑词。找负责短信接口的同事要了一个黑词列表,里边有上千行的黑词,因为着急下班回家,想到处理这些小问题还是得Python这些小脚本出马。先将黑词列表文件存成utf-8格式「个人爱好,非必须步骤」在编辑器中写入如下代码:#-*-coding:utf-8-*-importsysreload(sys)sys.setdefaultencoding('utf-8')f=open('test.txt','rb')foriinf:ifiinu"短信内容":printi.decode('utf-8')但是事实和想象不同的是,内容基本没有匹配出来……然后各种检查:for循环中输出判断某一个黑词是否=='黑词',结果居然不等以为是各种编码问题,开始保存成gbk,来回转换编码……无果抽风输出了for循环中每行字符的长度...

精彩继续

Python环境一键配置安装(debian)

本安装包仅在32位的debian6系统中测试通过,其中「debian.sh」为参考军哥的lnmp0.9版本,安装后默认为lnmpa环境。我做了一点简单修改增加了ngx_cache_purge模块。如果已经安装过lnmp0.9可以无需执行「debian.sh」脚本(未做严格测试,如有问题可留言反馈)。安装此一键包可以在安装lnmp0.9版本基础上执行python.sh。执行过python.sh后安装的软件列表:Python-2.7.2python-pycurlsetuptools-0.6c11libxml2-2.7.8libxml2dom-0.5tornado-2.3uwsgi-1.1.2Jinja2-2.6py-redisrequestsDBUtils-1.1MySQL-python-1.2.3Imaging-1.1.7libmemcached-1.0.9pylibmc-1.2.3如没有单...

精彩继续

python版SAE图床v0.2

周四花了两个小时把SAE图床做了个简单升级,界面直接使用了SWFUpload的demo页面,比原来的界面要美观了一些。顺便增加了选中多个文件上传的功能,之前只能上传一个文件。代码不再打包放在free.fr上了,这次直接放在了github上,方便之后进行更新,即便以后不再更新也方便其他朋友继续维护。演示地址:SAE源代码地址:GitHub列一下TODOList:增加API方式上传、管理界面计划分离出来放在单独域名,通过api方式上传和管理文件增加缩略图功能BTW:看到有其他朋友开发了通过渣浪微博的发带图片微博接口上传文件,省去了豆子的消耗。但这样图片管理起来并不方便,俺拿了一份作了个演示:渣浪微博图床,但不再计划实现python版本,一则因为渣浪的pythonSDKoauth1.0版本上传的功能是不能用的,二则重复造轮子也没意义。

精彩继续

python版SAE图床

之前写过一篇『使用新浪SAE加速你的网站速度』中文件均是直接放在SAE目录中,如果文件比较多,上传就不是很方便,尤其图片(做图床的都懂的)。php版的图床应该已经有很多了,python版本的图床还不是很多,操刀简单写了一个简陋版。因为是图床,所以文件选择了存储在Storage中而不是像之前一样直接存储静态文件。前提:拥有一个python版SAE是必须的。俺用的框架是bottle,没有使用SAE默认的0.9.6,而是参考了『chinakr』同学的做法使用了0.11这个开发版,原因无他:俺是更新控。上传使用了swfupload而没有使用浏览器默认的上传文件方式。默认使用的Storage名称是images,可以在setting.py文件中修改代码下载地址:http://chairo.free.fr/down/images-upload.zip截图(图片已经是在SAE中了:),长的比较丑,还待美化...

精彩继续

网站多线程自动扒皮工具(python版)

做为一个程序猿工种来说,最头疼的就是做一个『美观、大方……』的页面了,前端同学一下午能出好几张页面,程序猿同学一下午也最多出半张页面,还是丑的不堪入目的半张。在论坛也经常看到有人说『xx站点皮肤不错,求皮肤或者求扒皮等』,正好俺前一阵有写一个简单的多线程采集数据的小脚本,就整理下写了个简单的扒皮工具。其实工具并非原创,新写的这个工具里好多代码是直接从『obmem』写的一个扒皮工具中直接copy过来的。重复造轮子只是想梳理一下代码,obmem的版本有近250行代码,俺的新版本只有不到200行,而且obmem兄弟的多线程是固定设置,俺的是根据需要下载的文件数量自动调整线程数量。文件数量比较多的时候还是线程多一些会速度快一些,不过不足的是线程太多容易被服务器判断成是cc攻击……直接放出代码地址:https://gist.github.com/2276690已知Bug:某些情况会出现乱码,但这个不...

精彩继续