- 博客(100)
- 收藏
- 关注
【Python真的很强大】使用yield优雅抓取网页分页数据
使用yield优雅抓取网页分页数据在使用Python来抓取网页数据的时候,常常碰到分页数据,其中部分下一页按钮已经有具体的链接地址,而另外的可能是javascript来处理分页的。这要求同时能解析页面内容,又要采集下一页的url。怎样优雅用python写这样的代码呢?或者说怎样更pythonic?下面分别给出部分代码实例 def get_next_page(obj): ...
2017-08-29 16:41:34 395
原创 用 Python 编写干净、可测试、高质量的代码[转载]
用任何语言都可以写出极其糟糕的代码,包括优雅强大的 Python 语言。在本文中,我们讨论看待测试的方式不同如何导致差异很大的 Python 代码。最后,讨论如何科学地度量代码差异。简介编写软件是人所承担的最复杂的任务之一。AWK 编程语言和 "K and R C" 的作者之一 Brian Kernigan 在 Software Tools 一书中总结了软件开发的真实性质,他说,“控制复...
2017-04-26 12:49:20 159
MySQL udf 获取linux文件修改时间
getFileModifiedTime.c #include <mysql.h> #include <string.h> #include <stdio.h> #include <stdlib.h> #include <time.h> #include <sys/type...
2016-11-10 17:31:54 205
管道的一个应用: 将一个tcp端口的输出转移到另外一个tcp端口而输出
案例: 有一个应用程序需要把数据输出给远程tcp端口44441, 为了安全, 数据会再次转发到端口44442,从而使得连接到端口44442的应用可以实时接收到数据。 为此,在远程tcp主机编写了shell脚本如下:#!/bin/bash -lpipe=/tmp/testpipeps -ef | grep -e '44441' -e '44442' | grep -...
2016-09-16 10:36:02 277
Monitor a process, if have run for more than 2 mins,kill it.
#!/bin/bash -lprocess_name='phantomjs'long_term=1pids=` ps -ef | grep -i "$process_name" | grep -v 'grep' | awk '{print $2;}'`if [ "$pids" == "" ]; then echo "no phantomjs running" >...
2016-08-05 18:01:28 102
网页转pdf或图片[电脑版][Android 版]
使用有道云笔记已有一年,整体体验良好。但它的网页剪报插件做得还不够好,所以自己亲自动手,制作了一个网页转换工具。亲们,可以体验下 网页转pdf或图片 Android 版: 扫一扫下载:...
2016-02-14 11:17:06 185
MySQL的XML接口-数据解析
MySQL从5.1.5开始,支持XML接口处理的两个函数: ExtractValue()和 UpdateXML(). 需求:编写停车计费算法: 输入:Express Text(XML), BeginTime DateTime, EndTime DateTime; 输出:Decimal(10,2)-计费金额 计...
2016-01-21 21:46:30 133
【Python真的很强大】多线程的使用
需求: 我们需要监控客户端是否已经掉线, 采用的做法是客服端定时发送消息到 socket server. 我们在socket server确认是否已经收到心跳消息,如果超时(timeout)则会剔除相应的客户端。 为此,我们准备在python抽象出原型雏形。熟悉Javascript的可能知道定时器函数setTimeout,setInterval. 我们在Pytho...
2015-12-13 10:47:01 96
Shell技巧几例
Shell技巧几例 一般我们的程序会有要求: 如果数据有变化,则更新到数据库。同时,我们会记录相关log,也可以从log中找出变化了的记录总数。 grep -o 'CLF6_F:.*$' CLF6_13_00_14_00_input.log | awk 'BEGIN {last="zzzzzxxx";} { if(last!=$0) {total++; last=$0;} } E...
2015-12-10 15:15:22 133
Clone user / Dump views in MySQL
Clone user / Dump views in MySQL 1. 数据库搬迁或复制的时候,需要同步MySQL user 及其权限,创建了脚本操作,如下: #!/bin/bash -lif [ $# -lt 1 ]; then echo "usage: $0 [MySQLHost]" ...
2015-12-02 14:47:38 113
Phantomjs/Casperjs, HtmlUnit, Selenium在获取Javascript页面时特性对比
Phantomjs/Casperjs, HtmlUnit, Selenium在获取Javascript页面时特性对比基于Phantomjs 2.0.0/Casperjs 1.1.0-beta3, Htmlunit 2.18, Selenium 2.47.1,在获取Javascript 页面时,对JavaScript engine,session/cookie支持, request url追...
2015-11-28 13:53:58 243
Avoid MySQL [Deadlock found when trying to get lock; try restarting transaction]
偶尔一天,监控到程序异常: OperationalError: (1213, 'Deadlock found when trying to get lock; try restarting transaction'). 通过网络Seach,发现show innodb status (MySQL5.1以下可以用)/show engine innodb statu...
2015-11-13 16:14:38 228
【Python真的很强大】使用telnetlib编写nagios命令来监控远程主机cpu-load
需求: 远程unix主机cpu load 有时过高,现在需要监控它,当超过阀值则email报警. 访问该主机只能通过telnet,不能安装其他任何library。 现有资源: 已经有nagios环境,python已自带telnetlib模块,可以通过执行uptime命令获取1(5,10)分钟平均cpu load。 通常,用shell sc...
2015-08-28 09:09:37 212
Shell 技巧 | 解决方案
1) 在/etc/profile里创建了环境变量,发现在指定用户下创建的cronjob运行期不能找到对应的环境变量的值(例如$PATH),在crontab下发现默认$PATH=/bin:/usr/bin。如调用的程序不在上述路径,则程序会报错:xxx not found. 上述解决的方案,最好的解决方法是在xxx.sh中第一行这样写: #!/bin/bash -...
2015-05-25 13:34:25 122
python 实现每天产生一个日志文件
与java apache log4j的ConsoleAppender,RollingFileAppender类似,python也有自己的实现,分别是logging.StreamHandler(),logging.handlers.TimedRotatingFileHandler. 下面是示例代码: def script_path(): path = o...
2015-05-19 12:30:10 1556
【Python真的很强大】使用fabfile.py来自动化你的任务
Fabric简介:通过ssh登录远程主机,可以部署应用程序和管理系统日常任务。如果你使用过SMB或NFS,你会觉得管理远程文件和本地文件没有什么差异。使用fab管理文件,你也会有如此感受。 管理系统日常任务查询所有主机crontab中是否包含指定任务def checkCron(keywords): setSshAccount() result= ru...
2015-04-24 13:52:10 458
MySQL表数据比较和Object全文搜索
比较MySQL表中的数据:先需要过滤排除不需要比较的字段,比如timestamp字段等;然后再排序字段(先按关键字排序,再按非空的字段排序,最后按其他字段排序), 当然一般情形还需要加where 条件,下面写了一个函数来构造一个SQL 语句。CREATE DEFINER=`mysql`@`%` FUNCTION `f_toolkit_getFieldListFromTable`(`da...
2015-04-13 09:35:38 102
【Python真的很强大】成长基因
Python强大的原因归功于他的轮子众多,而且不断成长的packaging 下面是Python中的部分轮子: http://www.python-eggs.org/whl files.
2015-04-06 10:19:31 125
【Python真的很强大】使用casperjs获取javascript渲染生成的html内容
文章摘要:其实这里casperjs与python没有直接关系,主要依赖casperjs调用phantomjs webkit获取html文件内容。长期以来,爬虫抓取 客户端javascript渲染生成的html页面 都极为 困难, Java里面有 HtmlUnit, 而Python里,我们可以使用独立的跨平台的CasperJS。 创建site.js(接口文件,输入:url,输出:ht...
2015-04-04 12:21:50 240
【Python真的很强大】使用scrapy爬取百度贴吧-上海吧
需求是这样的: 需要获取最近20天的贴吧的主题贴以及直接回复(过滤回复的回复),输出数据到MySQL 这里以百度贴吧-上海吧为例子。 上海吧的结构如下,主题帖和回复都带有分页。如下所示: 定义全局变量(settings.py): # -*- coding: utf-8 -*-# Scrapy sett...
2015-03-15 12:46:32 712
【Python真的很强大】使用PIL合成图片
目前有如下需求,想用python生成一些图文并茂的图片,然后再与另外一个图片合并(合并风格:局顶,局底,局左,局右),具体就是合并一个饼型图和其注释内容(每份扇型图的名字,所占百分比等). 原始图如下: 代码部分: from PIL import Image, ImageDraw, ImageFont, ImageFilterdef pe...
2014-10-13 14:03:41 279
ftp断点继传
导语: 如果ftp server支持REST指令(可以通过ftp client登入,然后输入REST 100,然后检查服务端响应),则上传或下载失败后,下次连接成功后可以从断点开始继续传输数据; 下面是基于Delphi7的组件IdFTP的示例代码,比自己用指令实现方便。 断点上传:procedure TFtpThread.Ex...
2014-08-13 01:18:59 127
将多张图片合并为一张大图片
类似拼图游戏中,我们常常要将多张图片拼成一张图片。这些小图片的特征类似:宽,高每张都相等。Delphi 7代码如下:program Gigsaw;{$APPTYPE CONSOLE}uses SysUtils,jpeg,Graphics;vari,j:integer;jp: TJPEGImage;bmp_t, bmp: TBitmap;...
2014-08-12 00:10:56 178
xml + xslt => html => pdf
继上一篇:使用java将xml格式化,本blog主要描述如何通过xslt将xml渲染为html(包含CSS),然后再将html转为pdf. 如果你想了解更多xslt信息,请点击链接xslt。本程序直接使用javax.xml.transform.Transformer将howto.xsl通过数据源howto.xml渲染并保存为howto.html,然后通过第三方开源软件ht...
2014-03-05 18:02:12 196
【Python真的很强大】md5sum in Python
''' md5sum in Python ''' try: from hashlib import md5 #Python2.5 or later version except: from md5 import md5 #Python2.4 or before version ...
2014-01-17 13:17:02 633
使用java将xml格式化
将生成的xml用ie浏览器打开,就可以见到漂亮的缩进的xml schema.但是每次都这样也不方便。在java程序中,直接使用jdk的javax.xml.transform.Transformer即可完成。而且如果有节点未被匹配,也能通过错误提示及时发现。 先贴代码如下: import java.io.File;import java.io.StringRe...
2013-12-25 18:04:40 128
【Python真的很强大】程序Log实时监控
需求构思: 在linux下常常需要查看程序的实时输出,我们用 tail -f logfile 即可在console下实现此需求。现在要拓宽应用: 想在web browser下查看程序(以及日志)的实时输出(也就是程序Log的Web实时监控)。架构构思: 因为考虑了“实时"这个需求,所以初步定位为socket架构; 再因为是构建在web之上,属于web app,所以socket进一...
2013-12-10 16:45:48 180
原创 【Python真的很强大】开发简易在线搜索
需求如下:开发一个简易的搜索引擎(即提供查询关键字的服务)程序思路及模型: python构建一个Http Server;提供用户输入的一个静态页面;用户提交请求后,把请求再转发到其他站点,最后把结果(动态页面)传给用户下面是程序原型模型(使用python 2.7编写,没有使用第三方library/module),没有任何优化,主要演示Http Server构建过程,Html Par...
2013-11-25 23:54:07 110
使用py2exe打包MySQLdb程序为exe
最近写了一个日志管理的脚本LocalLogHousekeeper.py,是在ubuntu下写的。考虑测试python script的跨平台性,老大要求打包为exe程序,然后测试运行在没有安装python,没安装任何第三方插件的windows xp上。 下面是整个流程的一个总结: 1)在windows上安装python,选择了版本2.7.5 2)...
2013-06-20 18:03:36 163
数据库: 模式与数据源模糊
基于数据库的模式和数据源是本次讨论的话题。这里的模式是启发于Oracle的Schema概念,数据源启发于Oracle的synonym和Haproxy,以及Mysql的federated table/view。 数据库对客户来说,存在多用户模式,比如免费用户,普通收费用户,VIP用户。对开发人员来说,存在测试/开发(环境),生产(环境)模式。从其他视角,还会找到...
2013-04-29 16:08:36 89
原创 shell几例
1.获取当前shell script所在的目录 PROGRAM_LOCATION="$( cd -P "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"2.检测进程是否存在-d /proc/$pid or -e /proc/$pid/exe3.shell and subshell 现在已知的是 while read l...
2013-04-25 15:04:15 88
sqlplus应用实例
1.在sqlplus中导出查询出的数据> set pagesize 0 set newpage none set trimout on set trimspool on spool /tmp/outfile.log select * from table; spool off 2.sqlplus中无法使用小键盘...
2013-04-25 14:42:19 90
Zabbix(2.04)两例
1)获取item value超时(你可能在log中看到first/another network error, wait for 15 seconds)agent:修改zabbix_agentd.conf 中的Timeout=30并重启server:修改/zabbix_server.conf中的Timeout=30并重启2)为每个item定制Email notification内...
2013-03-14 12:28:47 83
在CentOS 安装 cx_Oracle
以下是在CentOS安装 cx_Oracle的流程:准备阶段确认操作系统是32位还是64位(getconf LONG_BIT)确认当前python的版本(python --version)确认你要连接的oracle server version(select * from v$version;)确认有www.oracle.com的登录帐号安装install...
2013-02-22 15:55:52 141
原创 mysql应用小结
以下是使用mysql过程中碰到的部分问题以及解决方案数据源我们常常碰到这样的情形,当向一个主机取数据失败后期望立即转向第二个主机再取,第二个失败后继续转向第三个。。。这样重复下去。以前很多时候都是自己写代码去控制,其实mysql jdbc直接支持多个failover host,如jdbc:mysql://128.128.3.110:3306/128.128.3.111:3306/1...
2013-01-25 15:54:20 96
haproxy使用总结
DESCRIPTION HAProxy is a TCP/HTTP reverse proxy which is particularly suited for high availability environments. Indeed, it can: - route HTTP requests depending on statica...
2012-10-17 17:19:51 121
原创 解决mysql中的OperationalError: (2006, 'MySQL server has gone away')
这两天在python中用MySQLdb module操作数据库,碰到了如下错误信息:OperationalError: (2006, 'MySQL server has gone away'), 发生在一个长时间的读操作之中。看起来是connection在idle timeout后被关闭了。 之后找到了解决方案,就是碰到 AttributeError, MySQLdb....
2012-08-03 16:03:01 337
不能查看别人创建的存储过程的DDL
无论用navicat还是命令行show create procedure 都不能查看到存储过程的定义语句。检查权限,对数据库已有 SELECT, UPDATE, CREATE TEMPORARY TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE这些权限,其中上面最后两个是关于stored proc...
2012-08-01 14:33:14 170
原创 零星记忆---bug or not
1. sudo & > issue 问题描述: sudo echo'extension=redis.so'>/etc/php5/conf.d/redis.ini,得到如下出错信息:bash: /etc/php5/conf.d/redis.ini: Permission denied,想一行命令解决这个问题。问题解决: sudo bash -c "e...
2012-07-02 13:28:14 67
解决一个棘手的bug: java.lang.NoClassDefFoundError: android.os.AsyncTask
这个Bug发生在这样的环境: 你有很多的线程在同时运行,并且每个线程都需要持续运行相当长一些时间; 其中一些是用AsyncTask去作的,并且AsyncTask在其他的线程执行顺序之后。 java.lang.NoClassDefFoundError: android.os.AsyncTask.这里暂时不贴出异常栈信息(出现在unca...
2012-04-03 15:58:10 249
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人