1.示例如下:
使用dom格式处理
# -*- coding: utf-8 -*-
import xml.dom.minidom #导入处理xml文件的模块
import pandas as pd
import csv
#打开xml文档 并将这个文件对象存入dom变量
dom = xml.dom.minidom.parse('242.xml')
# documentElement用于得到dom对象的文档元素,并把获得的对象给root
root = dom.documentElement
# print(root.nodeName)
# print(root.nodeValue)
# print(root.nodeType)
# print(root.ELEMENT_NODE)
# 获取<target>标签
targets = root.getElementsByTagName('target')
# print(ress,len(ress))
# 创建一个csv文件,存储需要出的数据
with open('result.csv','a+',newline='',encoding='utf-8') as csvfile:
writer = csv.writer(csvfile)
writer.writerow(['IP','端口','协议','服务','状态'])
# 循环处理target标签的内容
for target in targets:
# 获取他的IP标签,格式是list,获取值的方式:list[0].childNodes[0].data,
ip = target.getElementsByTagName('ip')[0].childNodes[0].data
info = target.getElementsByTagName('record_results')
# print(info,len(info))
print(ip)
# 获取value的标签列表,并获取其中的数据
for values in info:
ports = values.getElementsByTagName('value')
aa = []
# 长度为4的是port的value。
if len(ports) == 4:
for port in ports:
# 获取value的值
v = port.childNodes[0].data
aa.append(v)
print(aa)
with open('result.csv','a+',newline='',encoding='utf-8') as csvfile:
writer = csv.writer(csvfile)
# 写入到csv中
writer.writerow([ip,aa[0],aa[1],aa[2],aa[3]])
print('*******')
# print(d[0].data)
# print(ports)
print('=========================================================')