Python3解析XML文件(xml.etree.ElementTree)——以简单网络爬虫为例

文章目录

  • 简单爬虫案例(XML解析)#
  • XML文件生成

本文作者:合肥工业大学 管理学院 钱洋 email:[email protected] 内容可能有不到之处,欢迎交流。
未经本人,允许禁止转载。

简单爬虫案例(XML解析)#

在python3中可以使用 xml.etree.ElementTree 模块操作XML文档。以下案例为网易汽车的销量数据,地址为:

http://db.auto.sohu.com/cxdata/xml/sales/model/model1001sales.xml

Python3解析XML文件(xml.etree.ElementTree)——以简单网络爬虫为例_第1张图片

从网页内容中,可以看到是XML文件。以下为其解析程序,我想要的数据是date(销量的日期)、salesNum(销量)两个数据:

# -*- coding: utf-8 -*-
from urllib.request import urlopen
import xml.etree.ElementTree as ET

# 以网易汽车为例
u = urlopen('http://db.auto.sohu.com/cxdata/xml/sales/model/model1001sales.xml')
#获取文本
s = u.read().decode('gbk')
root = ET.fromstring(s)
#从跟节点迭代子节点
for elem in root.iter():
    print (elem.tag, elem.attrib)
#取所有的sales子节点循环
for item in root.iterfind('sales'):
    #获取两列数据
    print(item.get("date"),'\t',item.get("salesNum"))

如下,为程序在控制台的输出结果:
Python3解析XML文件(xml.etree.ElementTree)——以简单网络爬虫为例_第2张图片

XML文件生成

在很多情境下,需要生成xml文件,例如我们可以通过字典的方式,将数据库的配置信息放入XML文件中,以下为操作程序:

# -*- coding: utf-8 -*-
from xml.etree.ElementTree import Element,ElementTree
from xml.etree.ElementTree import tostring


def dict_to_xml(tag, d):
    '''
    Turn a simple dict of key/value pairs into XML
    '''
    elem = Element(tag)  #使用Element创建元素
    #循环key与val
    for key, val in d.items():
        #创建新的元素,确定元素的值
        child = Element(key)
        child.text = str(val)
        #添加为elem的子节点
        elem.append(child)
    return elem

if __name__ == "__main__":
    #数据库配置的信息
    db_config = {
        'host':'127.0.0.1',
        'port':3306,
        'user':'db_user',
        'password':'db_user_passwd',
        'db':'database_name',
        'charset':'utf8'
    }
    #调用方法
    e = dict_to_xml('db', db_config)
    print(tostring(e))
    #转化为ElementTree
    tree = ElementTree(e)
    #写成xml文件
    tree.write('output.xml', encoding='UTF-8')


注意生成的xml没有头信息。
Python3解析XML文件(xml.etree.ElementTree)——以简单网络爬虫为例_第3张图片

在这里插入图片描述

你可能感兴趣的:(python,Python3开发)