编程语言 ’ 目录归档

《用Python写网络爬虫》读书笔记

1.书籍信息

书名:Web Scraping with Python
译名:用Python写网络爬虫
作者:Richard Lawson
译者:李斌
出版社:人民邮电出版社
ISBN:978-7-115-43179-0
页数:157

2.纸张、印刷与排版

16开本,纸张较厚,行、段间距较大,字体较大。

3.勘误

本书勘误文章:http://www.pythoner.com/492.html
出版社勘误页:http://www.epubit.com.cn/book/details/4610

4.笔记与评价

阅读级别:翻译。
推荐级别:细读,适合初学者。
阅读全文

《用Python写网络爬虫》勘误

《用Python写网络爬虫》这本书已经出版差不多两个月了,之前一直较忙,没有顾得上更新博客,今天先补上这本书的勘误,后续再将读书笔记等补齐(读书笔记地址:http://www.pythoner.com/495.html)。

想要购买本书的朋友可以通过京东当当亚马逊异步社区等渠道购买,其中部分购买渠道可以购买到本书的电子版。

和《Python核心编程(第三版)》不同,这本书是我第一次完整翻译全书(出版书籍)。虽然在翻译后又审阅多次,但是拿到成书后再读,还是会发现很多不妥之处。因此,还望各位读者对不当之处多加批评指正。

书中勘误可以通过异步社区来提交,每提交成功一个勘误可以获得100积分(相当于1元RMB),该积分可以用于换取样书。当然,您也可以在本文评论中提交。

本书中代码均已经过测试,原著中存在错误或易产生误解的地方都已进行了修改。最初想将搭建本书环境时遇到的各种问题总结一问,不过因为当时未能及时记录,现在也很难再回溯了。

如下是本书中文版(1版1印)的勘误:
阅读全文

《Python核心编程(第3版)》勘误

《Python核心编程(第3版)》目前已经出版,大家可以通过 京东当当亚马逊 购买。

本人参与翻译的是第4-7章,由于初次涉足,肯定会有不完善的地方,如发现错误敬请指出。

书中勘误可以通过 异步社区 进行提交,每提交成功一个勘误可以获得100积分(相当于1元RMB),该积分可以用于换取样书。当然,也可在本文下评论,我也会转交给编辑。

如有Python相关知识的问题,也可以与我讨论。

【漏洞预警】Tornado某缺陷可能造成文件读取漏洞 (updated @ 2015-03-04)

昨晚,wooyun上有用户报告Tornado框架某缺陷可能造成文件读取漏洞。该用户没有在公开描述中提到更多的信息。

1. 影响版本
起始版本未知,至少影响3.1及以上版本。

2. 漏洞描述
可能造成不应被读取的文件被读取。
洞主没有明确说明被读取的文件需要满足何种条件。
根据我的猜测,应为全平台,但文件名需满足特定条件(见第4节)。

3. 网友观点
阅读全文

使用Python下载邮件(pop/imap)

最近实现了一个使用Python自带的poplib和imaplib库下载邮件的程序,本文将对这个程序进行介绍。详细的模块介绍参见Python的官方文档(poplibimaplib)。

1. 程序源码

本程序的实现流程:

  • 1. 设置邮箱地址、密码、邮件服务器、传输协议(pop/imap)、是否使用SSL及输出目录,并对其进行解析。(为方便起见,上述设置本文使用了硬编码的方式,请根据自己的需求修改输入来源)
  • 2. 根据邮箱地址创建输出目录。
  • 3. 根据传输协议选择pop/imap对应的执行函数,读取邮件信息,解码并保存。
  • 4. 如果目录为空或异常退出,删除输出目录。

阅读全文

Tornado 4.0发布

当地时间2014年7月15日,Tornado发布了其4.0版本。

下载链接:https://pypi.python.org/packages/source/t/tornado/tornado-4.0.tar.gz
源码:https://github.com/tornadoweb/tornado

该版本的更新内容如下:

  • tornado.web.stream_request_body装饰器允许在限定的内存使用情况下上传大文件。
  • 协程变得更快,并且通过Tornado自身的使用更加广泛。更多的方法将返回Futures,包括IOStream中的多数方法以及RequestHandler.flush
  • 许多user-overridden方法现在允许返回Future来进行流量控制。
  • HTTP相关的代码现在被tornado.httpservertornado.simple_httpclienttornado.wsgi模块所共享,以更加一致地支持诸如chunked、gzip编码的功能。除了过去的single-callback接口以外,HTTPServer现在使用了定义在tornado.httputil中的新的委托接口。
  • 新的模块tornado.tcpclient使用非阻塞的DNS、SSL握手创建TCP连接,并且支持了IPV6。

向后兼容及其他更新记录参见官方文档

Python设置终端显示颜色、粗体、下划线等效果

也许你希望在终端上输出一些带有颜色或者粗体、下划线等样式的信息,就像man中的那样,那么这篇文章将会起到些许作用。

在Linux终端中,使用转义序列来进行如上所述的显示,转义序列以ESC开头,即ASCII码下的\033,其格式为:
\033[显示方式;前景色;背景色m
显示方式、前景色、背景色至少一个存在即可。
阅读全文

Python天坑系列(一):while 1比while True更快?

0. 前言

前些天被Python的多线程坑了一把,因此产生了写一个《Python天坑系列》博客的想法,说说我碰到的那些Python的坑。

而天坑这个词呢,一方面指Python的坑,另一方面也说明本系列文章也是个坑,对于会写什么内容、有多少篇、多久更新一次、什么时间更新我都无法确定,哈哈(看,之前已经3个月没有更新过了!)。

本篇是系列的第一篇,讲的内容是Python的bool类型。
阅读全文

Python socket模拟TCP通讯

本文将介绍使用Python的socket模块创建TCP客户端和服务端的方法。详细的模块介绍参见Python官方文档

对于TCP server端的创建而言,分为如下几个步骤:

  • 创建socket对象(socket):其中两个参数分别为Address Family(如AF_INET为IPV4,AF_INET6为IPV6,AF_UNIX为UNIX域协议族)、socket类型(如SOCK_STREAM为TCP,SOCK_DGRAM为UDP)。
  • 绑定服务器地址(bind):参数为服务器地址二元组。
  • 监听(listen):参数为允许的连接数。
  • 等待请求(accept)。
  • 接收数据(recv、recvfrom、recvfrom_into、recv_into)、发送数据(send、sendall、sendto)。
  • 关闭连接(close)。

阅读全文

《Introduction to Tornado》中文翻译计划——第八章:部署Tornado

本文为《Introduction to Tornado》中文翻译,将在https://github.com/alioth310/itt2zh上面持续更新,本文内容可能不是最新状态,请在GitHub上获得最新版本。

本文也可在http://demo.pythoner.com/itt2zh上进行格式化的预览。

第八章:部署Tornado

到目前为止,为了简单起见,在我们的例子中都是使用单一的Tornado进程运行的。这使得测试应用和快速变更非常简单,但是这不是一个合适的部署策略。部署一个应用到生产环境面临着新的挑战,既包括最优化性能,也包括管理独立进程。本章将介绍强化你的Tornado应用、增加请求吞吐量的策略,以及使得部署Tornado服务器更容易的工具。
阅读全文

return top