开始学习python爬虫,xml.dom模块解析xml


1 .什么是xml?

xml即扩展标记语,它可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。

.我们举个栗子:



	
		Harry Potter
		29.99
	
	
		Learning XML
		39.95
	
我们看格式很像html,但是xml比html格式严谨,并且html用来展示数据,xml用于传输和存储数据。

那么它有如下特征:

  • 它是有标签对组成,
  • 标签可以有属性:
  • 标签对可以嵌入数据:abc
  • 标签可以嵌入子标签(具有层级关系)

2. 获得标签属性

from xml.dom import minidom

doc = minidom.parse('book.xml')
root = doc.documentElement #获得文档对象
# print(dir(root))
print(root.nodeName) #bookstore
print(root.nodeValue) #None
print(root.nodeType) # 1  编号1,元素节点
 
   每个节点都有它的nodeName、nodeValue、nodeType,注:nodeValue是节点的值,只对文本节点有效。 
  
nodeType是节点类型
元素节点              Node.ELEMENT_NODE(1)
属性节点              Node.ATTRIBUTE_NODE(2)
文本节点              Node.TEXT_NODE(3)
CDATA节点               Node.CDATA_SECTION_NODE(4)
实体引用名称节点      Node.ENTRY_REFERENCE_NODE(5)
实体名称节点          Node.ENTITY_NODE(6)
处理指令节点          Node.PROCESSING_INSTRUCTION_NODE(7)
注释节点               Node.COMMENT_NODE(8)
文档节点               Node.DOCUMENT_NODE(9)
文档类型节点          Node.DOCUMENT_TYPE_NODE(10)
文档片段节点          Node.DOCUMENT_FRAGMENT_NODE(11)
DTD声明节点             Node.NOTATION_NODE(12)

3. 获得子标签

from xml.dom import minidom

doc = minidom.parse('book.xml')
root = doc.documentElement #获得文档对象
# print(dir(root))
# print(root.nodeName) #bookstore
# print(root.nodeValue) #None
# print(root.nodeType) # 1
books = root.getElementsByTagName('book')
print(type(books)) #
for book in books:
    titles = book.getElementsByTagName('title')
    print(titles[0].childNodes[0].nodeValue)
结果:

Harry Potter
Learning XML

4. 获得标签属性值

from xml.dom import minidom

doc = minidom.parse('book.xml')
root = doc.documentElement #获得文档对象
# print(dir(root))
# print(root.nodeName) #bookstore
# print(root.nodeValue) #None
# print(root.nodeType) # 1
# books = root.getElementsByTagName('book')
# print(type(books)) #
# for book in books:
#     titles = book.getElementsByTagName('title')
#     print(titles[0].childNodes[0].nodeValue)
itemlist = root.getElementsByTagName('title')
print(itemlist[0].getAttribute("lang"))
结果:eng






你可能感兴趣的:(开始学习python爬虫,xml.dom模块解析xml)