安装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...

精彩继续

requests抓取需登录(cookie)的页面

之前用requests比如网址缩短,再比如自动识别网站友情链接,并自动识别网站RSS地址,还有微信公共平台apiPython(bottle)版都是抓取不需要登录的页面内容。两周前使用requests做了一个简单的phpwind论坛自动登录然后打卡的小脚本,不得不说用requests做这些事比用urllib2之类要方便的多。简简单单两行代码搞定:_data={'lgt':1,'pwuser':usr,'pwpwd':pwd,'question':0,'customquest':'','answer':'','hideid':0,'forward':'','jumpurl':'http://xxx.com/u.php','m':'bbs','step':2,'cktime':cktime}r=requests.post(_url,data=_data)_cookies=r.cookies获取到...

精彩继续

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

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

精彩继续

将淘宝客链接转换为正常淘宝、天猫商品链接

前一阵有个朋友采集了一堆的淘宝客推广链接,但很多都是加密后的格式http://s.click.taobao.com/t?e=zGU34CA7K%2BPkqB07S4%2FK0CITy7klxxrJ35Nnc0vWaHl37H18cjdMO0RFhunziOFb%2FYR38ThEJAQs2K2vhBq7dgXLmU%2BSx8tU3PLk9d5Pc2Up下文均简称此为淘客链接,朋友希望能转换成正常的淘宝链接,然后他再去自己的微博等地方单独推广这些商品。他Google了一下,现有的大部分工具都是将普通的淘宝商品链接转换成淘宝客链接,没找到现成的工具可以反向操作的。朋友QQ问我有没办法实现,本来计划用c#写一个gui的工具给他,但他机器上没.netframework加上朋友对这些东西一知半解,还是用Python做了一个简单的实现这里就不放出最终的成品了,只放出操作的过程和核心的函数。首先拿到一...

精彩继续

解决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')...

精彩继续

自动识别网站友情链接,并自动识别网站RSS地址

起因:GoogleReader订阅的Blog中有人推荐了一篇通过友情链接进行博客Feed的搜集,你的博客收录了吗,文章作者并没有给出完整的代码,只给出了识别友情链接所在区域的算法,而且看样子该博主也不大计划提供了。所以:算法有了,完整代码还远么:D最终:用不到120行的代码就把完整识别友情链接&&获取网站RSS地址的代码全部实现了,当然核心算法还是用的上边提到的那个文章中的算法。完整代码:#-*-coding:utf-8-*-importlibxml2dom,sys,requestsreload(sys)sys.setdefaultencoding('utf-8')defaffect(points,keep_ratio,ratio,power):keep=points*keep_ratioifratio>=1.:returnpointsreturnkeep+(points-...

精彩继续

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如没有单...

精彩继续

/usr/local/lib/libxml2.so.2: no version information available错误解决办法

今天在某台vps上执行了下apt-getupdate&&apt-getupgrade之后再重启uwsgi时候就杯具了,提示/usr/local/lib/libxml2.so.2:noversioninformationavailable(requiredbyuwsgi)搜索信息时候发现更多碰到这种情况都是php-v时候会出现,而大多的信息都是说libxml的版本不对,重新修改libxml2.so.2的软链接指向即可「ln-s」。我测试这台vps的php-v果然也提示了一堆/usr/local/lib/libxml2.so.2:noversioninformationavailable的提示:但通过phpinfo()检查时候发现libxml的版本其实是正确的(我的是编译的libxml2.7.8):找到另一台正常的VPS查看libxml2.so.2文件大小,发现两台VPS的文件...

精彩继续