11.2. 避免通过 HTTP 重复地获取数据

假如说你想用 HTTP 下载资源,时时彩计划软件公式:例如一个 Atom feed 汇聚。你不仅仅想下载一次;而是想一次又一次地下载它,如每小时一次,从提供 news feed 的站点获得最新的消息。让我们首先用一种直接而原始的方法来实现它,然后看看如何改进它。

例 11.2. 用直接而原始的方法下载 feed

>>> import urllib
>>> data = urllib.urlopen('http://www.bhlaab.com/255/xml/atom.xml').read()    
>>> print data
<?xml version="1.0" encoding="iso-8859-1"?>
<feed version="0.3"
  xmlns="http://www.bhlaab.com/941/atom/ns#"
  xmlns:dc="http://www.bhlaab.com/013/dc/elements/1.1/"
  xml:lang="en">
  <title mode="escaped">dive into mark</title>
  <link rel="alternate" type="text/html" href="http://www.bhlaab.com/612/"/>
  <-- rest of feed omitted for brevity -->
使用 Python 通过 HTTP 下载任何东西都简单得令人难以置信;实际上,只需要一行代码。urllib 模块有一个便利的 urlopen 函数,它接受您所要获取的页面地址,然后返回一个类文件对象,您仅仅使用 read() 便可获得页面的全部内容。这再简单不过了。

那么这种方法有何不妥之处吗?当然,在测试或开发中一次性的使用没有什么不妥。我经常这样。我想要 feed 汇聚的内容,我就获取 feed 的内容。这种方法对其他 web 页面同样有效。但是一旦你开始按照 web 服务的方式去思考有规则的访问需求时 (记住,你说你计划每小时一次地重复获取这样的 feed ) 就会发现这样的做法效率实在是太低了,并且对服务器来说也太笨了。

下面先谈论一些 HTTP 的基本特性。

必赢客时时彩 吉林时时彩开奖 江西时时彩杀号网 吉林11选5开奖结果 时时彩的就是方法
拉菲时时彩平台下载 彩票助赢软件cpzyrj 重庆时时彩杀号网址 合乐888官网 时时彩有规律吗
重庆时时彩趋势软件 江西时时彩五星和值 2016送彩金的娱乐平台 重庆老时时彩开奖视频 内蒙古时时彩玩法规则
优博时时彩 老时时彩上浤发玩 帝豪彩票 时时彩如何看走势选胆 php时时彩平台源码