python小技巧与坑
这几天打算用python写个小爬虫,就找出先前写python时候整理的一份小文档,顺便把它贴到博客上面来,以后如果还有其他心得,也一并记录在这里好了。
上两周的时候,陈怡同学问我怎么通过程序自动化截屏浏览器页面,她说有篇论文用的是python与selenium。当时我的心理活动是这样的:“卧槽selenium是什么鬼,女博士果然是见多识广。” =。=# 然后查了一下,selenium大概可以理解成一个浏览器模拟器(或者实际上是浏览器驱动器,Selenium WebDriver),selenium提供多种编程语言的接口让我们可以通过程序来驱动本地浏览器,并执行我们想要的操作。 以陈怡同学的需求为例,就是通过python调用selenium接口来驱动我的Firefox,打开xx网站,截图保存。 我的环境: python 2.7.6,selenium 2.48.0 安装selenium库: 参考https://pypi.python.org/pypi/selenium #从selenium库引入webdriver类 from selenium import webdriver #新建一个browser对象(驱动firefox浏览器) browser = webdriver.Firefox()
1. 新建项目 创建如下目录与文件: game-server是我们“游戏”的后端服务器目录,负责处理用户的登陆、聊天等相关逻辑。web-server是我们网站的服务器目录。 { "name": "pomelo-todpole-chat", "version": "0.0.1", "private": false, "dependencies": { "pomelo": "1.1.6" } } { "name": "pomelo-todpole-chat",
首先,$which pomelo发现全局的pomelo命令指向的是/usr/local/bin/pomelo文件,该文件是/usr/local/lib/node_modules/pomelo/bin/pomelo文件的软链接,直接查看该文件的内容,我们发现这个pomelo其实就是一个js文件。而且头一行为: ,这句话表示告诉系统,我们要调用node进程来执行pomelo这个js脚本文件。$pomelo start = $node /usr/local/bin/pomelo;$pomelo start -D = $node /usr/local/bin/pomelo start -D。 再往下看,有这么一段代码: program.command('start') .description('start the application') .option('-e,
什么是Node.js 简单来说,Node.js是一个服务器端的javascript运行时环境,使得我们可以在服务器端运行javascript代码。 至于安装Node.js,Node.js官网有已编译的二进制文件,也有源文件包。我自己是下载源文件重新编译安装的。 Hello,World 方法一:直接执行无参数的node命令,进入node命令行界面,打印Hello, World。 方法二:执行node hello.js命令,调用写好的javacript脚本。 console.log('Hello, World'); 一个基本的Web Server 这是nodejs.org的一个官方例子,使用Node.js建立一个web服务器。打开编辑器,建立一个名为app.js的文件,内容如下: var http = require('http'); http.createServer(function (req, res)
1. 原始类型和对象类型 javascript的数据类型分为两类,原始类型(primitive type)和对象类型(object type)。原始类型包括javascript已定义的数值、字符串、布尔值。对象类型包括用户定义的对象以及函数(对,函数在javascript中其实也是一种对象)。原始类型的赋值是传值赋值,对象类型的赋值是引用赋值。在下面的例子可以看出来。 var n = 10; var m = n; // 传值赋值,m的值等于n m = 13; console.log('n =
php生成静态html文件,主要用在某些并不需要实时更新,且访问量大的页面,比如说门户的首页。顾名思义,就是当首次访问时候,php生成一个静态html页面,同时该页面有一个“有效时间”,在有效时间内所有的访问都直接返回该html页面,而不需要每次访问都重新生成页面。当过了有效时间后,重新生成一次静态html页面即可。从而节省系统开销。 (当然,这个静态html文件内部还可以通过ajax实时更新数据。) 如下所示: 用户访问output.php页面,后台首先查看是否存在有效的output.html, 若存在,直接返回该html文件; 若不存在,php重新处理数据输出给用户,同时生成一个新的html文件留待之后的访问。 if (is_file('output.html') && (time() – filemtime('output.html')) < 300) { // 如果静态页面存在且仍在有效时间内(这里设为5分钟),直接输出该静态文件 require_once('output.html'); } else
今天准备写汤圆网的app后台接口时,观摩了一下api.huaban.com的返回。发现人家的http响应头中有个值: Content-Encoding:”gzip” 看起来略屌对不对,我才知道原来http响应可以在先服务器端进行gzip压缩,然后传输,最后由浏览器自动解压!这样既能加速传输效率、又降低带宽占用。对于我这种带宽渣渣的小个体户,简直就是天降福音。 (sorry,以上都是废话) nginx关于gzip压缩模块的官方配置文档:http://nginx.org/en/docs/http/ngx_http_gzip_module.html 1. 打开nginx的配置文件 nginx.conf 2. 在http花括号里可以看到gzip功能被注释掉了: #gzip on; 3. 取消注释,开启gzip压缩,并添加如下配置: gzip on; gzip_comp_level
关于AFNetworking的介绍就不多说了,这是一个时下比较流行的ios和mac os网络库,不过遗憾的现在只有objective-c版本。 1. 安装CocoaPods $ sudo gem install cocoapods 安装过程比较慢,你可以用$ sudo gem install cocoapods -V来观察后台的执行过程。 另外,由于GFW的原因,RubyGems资料源可能被墙,可以将gem的源换成淘宝的RubyGems镜像。 2. 编辑Podfile 在项目目录下添加podfile文件,编辑内容:
Codeigniter默认使用的是mysql数据库驱动,但php 5.x后就不推荐使用mysql数据库驱动了。检查日志会发现有如下错误警告: mysql_pconnect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead