注:文章原文为Dr. Charles Severance 的 《Python for Informatics》。文中代码用3.4版改写,并在本机测试通过。

  一旦利用程序通过HTTP协议获得并分析文档变得简单,那么开发生成一个特殊设计的、供其他程序使用的文档(不是在浏览器中显示HTML)的方法也不用花太长时间。

  我们使用的通过网页互换数据的通用格式有这么两种:扩展标记语言XML和JSON(见 www.json.org)。XML已经应用多年,最适合互换文档样式数据。当程序之间只想互换字典、列表或者其它内部信息,它们使用JSON。我们将审视这两种格式。

13.1 扩展标记语言-XML

13.1 eXtensible Markup Language - XML

  XML看起来和HTML非常相似,但是XML比HTML更加结构化,下面是一个XML文档的示例:
<person>
<name>Chuck</name>
<phone type="intl">
+1 734 303 4456
</phone>
<email hide="yes"/>
</person>

  用结构树来看待XML往往比较有益。下图中顶层父标签是Person,phoned、name是父节点的孩子。

13.2 分析XML  

  下面是一个从XML中分析并抓取一些元数据的简单程序:

import xml.etree.ElementTree as ET

data='''
<person>
<name>Chuck</name>
<phone type="intl">
+1 734 303 4456
</phone>
<email hide="yes"/>
</person>''' tree = ET.fromstring(data)
print('Name:', tree.find('name').text)
print('Attr:', tree.find('email').get('hide'))

  运行代码的输出为:

Name: Chuck
Attr: yes

  (译者注:不要将这个代码保存为xml.py,不然运行时将程序将报错:ImportError: No module named 'xml.etree'。因为在引入库文件时,Python将首先搜索当前目录,当前目录下命名为xml.py的文件或包将覆盖同名的标准库。)

  调用fromstring将字符串显示的XML转换为XML节点树。当XML在树中时,我们有一系列的方法可以从XML抽取部分数据。

  find函数搜遍XML树,并获取匹配指定标签的节点。每个节点可以有一些文本,一些属性(如hide),以及一些子节点。每个节点可以成为树的根节点。

  当XML如本例一样非常的简单时,使用类似ElementTree这样的XML分析器有很多优势。事实证明,认定有效的XML有很多规则,使用ElementTree允许我们从XML提取数据而无需担忧语法规则。

13.3 遍循节点

  XML经常有多个节点,我们必须编写一个循环来处理所有的节点。在下面的程序中,我们将遍循所有的user节点:

import xml.etree.ElementTree as ET

input = '''
<stuff>
<users>
<user x="2">
<id>001</id>
<name>Chuck</name>
</user>
<user x="7">
<id>009</id>
<name>Brent</name>
</user>
</users>
</stuff>''' stuff = ET.fromstring(input)
lst = stuff.findall('users/user')
print('User count:', len(lst)) for item in lst:
print('Name ', item.find('name').text)
print('Id ', item.find('id').text)
print('Attribute ', item.get('x'))

  findall方法获取一个以XML树方式表示user的子树列表。然后我们用一个for循序查看每个user节点,并打印出其name和id的文本信息,以及x属性。

  程序的输出如下:
User count: 2
Name Chuck
Id 001
Attribute 2
Name Brent
Id 009
Attribute 7
13.4

Python for Infomatics 第13章 网页服务一(译)的更多相关文章

  1. Python for Infomatics 第13章 网页服务四(译)

    这几天因为其他事务,打断了自己的学习计划,今天继续我的翻译,避免又中途而废. 注:文章原文为Dr. Charles Severance 的 <Python for Informatics> ...

  2. Python for Infomatics 第13章 网页服务三(译)

    注:文章原文为Dr. Charles Severance 的 <Python for Informatics>.文中代码用3.4版改写,并在本机测试通过. 13.6 应用程序接口API 现 ...

  3. Python for Infomatics 第13章 网页服务二(译)

    注:文章原文为Dr. Charles Severance 的 <Python for Informatics>.文中代码用3.4版改写,并在本机测试通过. 13.4 JavaScript ...

  4. #Python学习笔记:1-3章 (基于《python编程,从入门到实践)

    第1-3章 这个文档是记录我学习python时一些学习笔记以及一些想法也可以称作复习笔记 第一章:起步这一章主要是从第一个"hello world"程序到python环境的搭建与配 ...

  5. Python for Infomatics 第12章 网络编程六(译)

    注:文章原文为Dr. Charles Severance 的 <Python for Informatics>.文中代码用3.4版改写,并在本机测试通过. 12.9 词汇表 Beautif ...

  6. Python for Infomatics 第12章 网络编程四(译)

    注:文章原文为Dr. Charles Severance 的 <Python for Informatics>.文中代码用3.4版改写,并在本机测试通过. 12.7 用BeautifulS ...

  7. Python for Infomatics 第12章 网络编程一(译)

    注:文章原文为Dr. Charles Severance 的 <Python for Informatics>.文中代码用3.4版改写,并在本机测试通过. 本书中的许多例子关注的是读取文件 ...

  8. Python for Infomatics 第14章 数据库和SQL应用一(译)

    14.1 什么是数据库 数据库一种存储结构数据的文件.绝大多数数据库类似字典——映射键和值的关系.最大的区别是数据库是保存在硬盘或其它永久性的存储上,所以在程序结束后它仍然存在.而保存在内存中的字典容 ...

  9. Python for Infomatics 第12章 网络编程三(译)

    注:文章原文为Dr. Charles Severance 的 <Python for Informatics>.文中代码用3.4版改写,并在本机测试通过. 12.5 HTML分析和网页抓取 ...

随机推荐

  1. JS 原型的妙用

    原型是JS的一个重要的特征,通过它可以实现类和实例直接的继承关系. 1.原型来来实现数据备份 // 通过原型来来实现数据备份 function p(x){ this.x = x; } p.protot ...

  2. Nancy总结(三)Nancy资料介绍

    Nancy 是一个轻量级用于构建基于 HTTP 的 Web 服务,可以基于 .NET 和 Mono 平台构建轻量级基于 HTTP 的Web 服务.它更多的是借鉴了Ruby的一些特性和Ruby的MVC ...

  3. css面包屑导航编号

    content:counter(flag);counter-increment: flag;-->一般给导航条编号1,2,3

  4. 大熊君学习html5系列之------History API(SPA单页应用的必备)

    一,开篇分析 Hi,大家好!大熊君又和大家见面了,(*^__^*) 嘻嘻……,这系列文章主要是学习Html5相关的知识点,以学习API知识点为入口,由浅入深的引入实例, 让大家一步一步的体会" ...

  5. rqnoj343 mty的考验

    题目描述 啊!几经周折.mty终于找到了他的偶像.他就是….fyc! 可是fyc这样的高级人士可不喜欢一个人总是缠着他.于是他出了一道难题想考考mty.fyc有几个手下:陈乐天,舒步鸡,胡巍……现在f ...

  6. windows7安装GitBash和GitGui

    安装很简单,搜索安装就行. 配置: 1.$ ssh-keygen -t rsa -C "your_email@youremail.com" 将"your_email@yo ...

  7. XML Schema and XMLspy notes

    Introduction An xml documents consists of elements, attributes and text. There are two structures in ...

  8. Android 一些基本组件的使用

    Dialog 基本用法 ,带自定义view AlertDialog dialog = new AlertDialog.Builder(context).setTitle("写入信息" ...

  9. SQLAchemy

    SQLAlchemy是Python编程语言下的一款ORM框架,该框架建立在数据库API之上,使用关系对象映射进行数据库操作,简言之便是:将对象转换成SQL,然后使用数据API执行SQL并获取执行结果.

  10. html中表格元素的相关总结

    表格元素相关总结: 1.在CSS中,内部表元素(如td.tr.col等)生成矩形框,这些矩形框包含内容.内边距和边框,但没有外边距,因此如果定义外边距,浏览器将忽略该定义:对于table元素,外边距有 ...