'''

开发一个给大百度的接口,各种要求,写一个xml文件,倒是不是很难

'''

import xml,datetime,codecs

import xml.dom.minidom as minidom

def covert_to_unicode(msg):

'''''将转入的编码转换为unicode,只接受utf-8和unicode编码'''

__re_str = None

if isinstance(msg, unicode):

__re_str = msg

elif isinstance(msg, str):

try:

__re_str = msg.decode('utf-8')

except Exception, errinfo:

raise Exception, '%s,%s' % (errinfo, str(msg))

else:

raise Exception, '%s 必须为str或unicode类型' % msg

return __re_str

class CreateCovXml():

def __init__(self, cov_xml_path):

self.__cov_path = cov_xml_path

self.__dom = None

self.__root = None

def _covert_code(self, msg):

return covert_to_unicode(msg)

def __create_new_node(self, node_name, node_text = None):

'''''为xml文件添加一个结点,其中node_text可以为空'''

if self.__dom == None:

raise Exception, '创建结点时,document对象还不存在'

# 创建的是结点只有结点名

if None == node_text:

return self.__dom.createElement(self._covert_code(node_name))

else:

newNode = self.__dom.createElement(self._covert_code(node_name))

newText = self.__dom.createTextNode(self._covert_code(node_text))

newNode.appendChild(newText)

return newNode

def begin_cov(self):

'''''begin_cov(self) --> None 创建coverage.xml文档和根结点'''

try:

impl = minidom.getDOMImplementation()

self.__dom = impl.createDocument(None, u'urlset', None)

self.__root = self.__dom.documentElement

except:

traceback.print_exc()

raise Exception, '创建coverage xml根结点失败'

def add_cov(self, url, title, priority, Horizontalpicture1,dayRetrievalstatus,channel,Largeblock,smallblock,blocknumber):

if self.__root == None:

raise Exception, '创建结点时,root结点不存在对象不存不存在'

urlstart_node = self.__create_new_node("url")

loc_node = self.__create_new_node("loc")

lastmod_node = self.__create_new_node("lastmod")

changefreq_node = self.__create_new_node("changefreq")

priority_node = self.__create_new_node("priority",priority)

data_node = self.__create_new_node("data")

display_node = self.__create_new_node("display")

channel_node = self.__create_new_node("channel",channel)

Largeblock_node = self.__create_new_node("Largeblock",Largeblock)

smallblock_node = self.__create_new_node("smallblock",smallblock)

blocknumber_node = self.__create_new_node("blocknumber",blocknumber)

title_node = self.__create_new_node("title",title)

subtitle_node = self.__create_new_node("subtitle")

url_node = self.__create_new_node("url",url)

Horizontalpicture1_node = self.__create_new_node("Horizontalpicture1",Horizontalpicture1)

Horizontalpicture2_node = self.__create_new_node("Horizontalpicture2")

Horizontalpicture3_node = self.__create_new_node("Horizontalpicture3")

singer_node = self.__create_new_node("singer")

area_node = self.__create_new_node("area")

timelength_node = self.__create_new_node("timelength")

episode_node = self.__create_new_node("episode")

updatetime_node = self.__create_new_node("updatetime")

briefintroduction_node = self.__create_new_node("briefintroduction")

daySearchvolume_node = self.__create_new_node("daySearchvolume")

dayRetrievalstatus_node = self.__create_new_node("dayRetrievalstatus",dayRetrievalstatus)

sitename_node = self.__create_new_node("sitename")

self.__root.appendChild(urlstart_node)

urlstart_node.appendChild(loc_node)

urlstart_node.appendChild(lastmod_node)

urlstart_node.appendChild(changefreq_node)

urlstart_node.appendChild(priority_node)

urlstart_node.appendChild(data_node)

data_node.appendChild(display_node)

display_node.appendChild(channel_node)

display_node.appendChild(Largeblock_node)

display_node.appendChild(smallblock_node)

display_node.appendChild(blocknumber_node)

display_node.appendChild(title_node)

display_node.appendChild(subtitle_node)

display_node.appendChild(url_node)

display_node.appendChild(Horizontalpicture1_node)

display_node.appendChild(Horizontalpicture2_node)

display_node.appendChild(Horizontalpicture3_node)

display_node.appendChild(singer_node)

display_node.appendChild(area_node)

display_node.appendChild(timelength_node)

display_node.appendChild(episode_node)

display_node.appendChild(updatetime_node)

display_node.appendChild(briefintroduction_node)

display_node.appendChild(daySearchvolume_node)

display_node.appendChild(dayRetrievalstatus_node)

display_node.appendChild(sitename_node)

def end_cov(self):

try:

f = open(self.__cov_path, 'wb')

writer = codecs.lookup('utf-8')[3](f)

self.__dom.writexml(writer, encoding='utf-8')

writer.close()

f.close()

return True

except Exception, err:

traceback.print_exc()

raise Exception, '写coverage.xml文件出错'#测试用例

test = CreateCovXml(result_filename+'.xml')

test.begin_cov()

priority_count = 0

for linkInfo in result_linkinfos:

priority_count = priority_count + 1

test.add_cov(

url = linkInfo.getTarget(),

title = linkInfo.getTitle(),

priority = str(priority_count),

Horizontalpicture1 = linkInfo.getDetailPicUrl(),

dayRetrievalstatus = "1",

channel = "资讯",

Largeblock = "带图区",

smallblock = "焦点小图",

blocknumber = "3-16"

)

test.end_cov()

os.chdir(basePath)

python 写xml_使用python 写xml文件相关推荐

  1. 辅助的写与数据库交互的XML文件的类

    现在企业级WEB应用中与数据库交互的XML文件都是通过插件自动生成的,不过有些时候修改比较老的项目的时候也是需要手动的来做这一动作的!如下代码就是一个实现上述的功能的辅助类,在此记录一下以备后用! p ...

  2. python中利用lxml模块解析xml文件报错XMLSyntaxError: Opening and ending tag mismatch

    今天在代码中第一次使用lxml解析xml文件时出错了, XMLSyntaxError: Opening and ending tag mismatch: keyEffectiveDate line 2 ...

  3. python读取txt、csv以及xml文件

    1.读取txt文件 txt文件是经常需要被操作的文件类型,python提供了以下几种常见的读取txt文件的方式: * read():              读取整个文件 * readline(): ...

  4. python实现对LabelImg标注的xml文件修改其标签名字

    使用labelImg标注数据时,通过python批量修改已经标注的数据标签名字,例如,本程序将标注生成的xml文件中的目标名字"zero"批量修改为"num", ...

  5. 使用Python类似pandas的方式读取xml文件

    文章目录 0. 什么是XML文件? 1. 为什么使用pandas_read_xml读取XML 2. 安装和加载 3. 使用 3.1 例一 3.2 例二 3.3 例三 0. 什么是XML文件?   XM ...

  6. python 抽取xml_python批量爬取xml文件

    2.需要下载的页面文件: 3.该页面需要登陆,然后批量下载共享漏洞文件,我们就通过cookie来实现. #!/usr/bin/env python # -*- coding: utf-8 -*- &q ...

  7. python教程1001python教程 - 百度_用python解析处理百度地图的xml文件

    今天周末,正好昨天对python的xml处理稍微了解了下,所以就拿出前几天申请的一个百度map的key,来处理下返回的xml文件,还好对着别人的做法,依葫芦画瓢,搞出来了.感觉效率不怎么高,估计是处理 ...

  8. python记录(4)- lxml模块创建xml文件

    因为要比赛制作voc数据集,然后给的数据集label是一个.txt文件,然后就需要将这个txt文件变为xml文件.对这方面一点也不懂,在此记录一下用lxml模块中的 etree创建xml文件.这只是一 ...

  9. java xpath 解析xml_使用XPATH解析XML文件

    使用XPATH解析XML文件 import java.util.Iterator; import java.util.List; import org.dom4j.Document; import o ...

最新文章

  1. IDEA 2020.1打开时闪退的问题及解决方法
  2. Javascript 获取页面高度(多种浏览器)
  3. C/C++中函数参数传递
  4. php ucword,ThinkPHP3.1.2整合UCenter详解(二)
  5. 幸运数字(洛谷-P3292)
  6. python爬取+BI分析5000条内衣数据,发现妹子最爱这款文胸
  7. 浅谈MySQL索引背后的数据结构及算法
  8. C++ Primer 笔记——嵌套类 局部类
  9. androidstudio调用系统相机为什么resultcode一直返回0_机器视觉系统原理及学习策略...
  10. Linux安装Jenkins教程
  11. 如何提高信号发生器(信号源)测量时的幅度精度
  12. P5385 [Cnoi2019]须臾幻境 LCT+主席树 维护区间联通块个数
  13. JS与jQuery获取任意事件的子元素下标(获取当前类数组的某一子元素下标)
  14. 新产品发布 | HawkEye作业票管理系统
  15. fatal error LNK1104:
  16. 关于Qt6.2中的所有属性绑定
  17. 《海底捞你学不会》学什么
  18. [OpenCV] cv::VideoCapture中read和grab+retrieve的区别
  19. C语言二值图的腐蚀膨胀及开闭运算
  20. D-CF29A Spit Problem

热门文章

  1. 爬虫学习round02
  2. 我的15年操作系统开源路——RT-Thread 创始人熊谱翔
  3. 分布式数据库进入实时时代,TiDB 5.0 带来了什么?
  4. 长肥管道(LFT)中TCP的艰难处境与打法
  5. Python 分析二手房源信息,揭晓土地交易现状
  6. C 语言未初始化的局部变量是多少?
  7. 程序猿都应学习的语言:看 25 张图学 UML
  8. 物联网3A格局:阿里云、亚马逊等入选Gartner最新全球物联网竞争报告
  9. 50 年的软件开发经验带给我的 63 个启示
  10. 又一 5G+AIoT 的强强联手!