# -*-coding:utf-8-*- #支持中文必须加上上面一句话 __author__ = 'cwh' #xml文件处理类 import xml.dom.minidom #包含时间类 import datetime #导入数据库处理文件 from usestudiodatabase import ApiSitemapData class UsestudioXML: #数据 apidb=ApiSitemapData() apiData=apidb.selectData(); #当索引超过五万时,启用此函数。 def apiSitemap(self): #在内存中创建一个空的文档 doc = xml.dom.minidom.Document() #创建一个根节点sitemapindex对象 root = doc.createElement('sitemapindex') doc.appendChild(root) #当索引文件超过五万时,以下文件需要循环生成。 nodeUrl = doc.createElement('sitemap') #给叶子节点loc设置一个文本节点,用于显示站点地图的url nodeLoc = doc.createElement('loc') nodeLoc.appendChild(doc.createTextNode('http://api.1473.cn/seo/sitemap1.xml')) #添加时间节点 nodeLastmod = doc.createElement("lastmod") #nodeLastmod.appendChild(doc.createTextNode(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'))) nodeLastmod.appendChild(doc.createTextNode(datetime.datetime.now().strftime('%Y-%m-%d'))) #将各叶子节点添加到父节点url中, #最后将url节点添加到根节点root中 nodeUrl.appendChild(nodeLoc) nodeUrl.appendChild(nodeLastmod) root.appendChild(nodeUrl) #开始写xml文档,"w+",打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 fp = open('c:\\usestudioxml\\sitemapindex.xml', 'w+') #写入XML头,类似 #indent='\t' 指第一个urlset的空格个数 addindent='\t'为后面的元素的空格间距。 #doc.writexml(fp, indent='\t', addindent='\t', newl='\n', encoding="utf-8") doc.writexml(fp, addindent=' ', newl='\n', encoding="utf-8") def apiXML(self): #在内存中创建一个空的文档 doc = xml.dom.minidom.Document() #创建一个根节点root对象 root = doc.createElement('urlset') #设置根节点的属性 #root.setAttribute('company', '有思俱乐部') #root.setAttribute('address', '科技软件园') #将根节点添加到文档对象中 doc.appendChild(root) for i in self.apiData: nodeUrl = doc.createElement('url') #给叶子节点loc设置一个文本节点,用于显示站点地图的url nodeLoc = doc.createElement('loc') nodeLoc.appendChild(doc.createTextNode(i[0])) #添加时间节点 nodeLastmod = doc.createElement("lastmod") #nodeLastmod.appendChild(doc.createTextNode(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'))) nodeLastmod.appendChild(doc.createTextNode(datetime.datetime.now().strftime('%Y-%m-%d'))) #将各叶子节点添加到父节点url中, #最后将url节点添加到根节点root中 nodeUrl.appendChild(nodeLoc) nodeUrl.appendChild(nodeLastmod) root.appendChild(nodeUrl) #开始写xml文档,"w+",打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 fp = open('c:\\usestudioxml\\sitemap1.xml', 'w+') #写入XML头,类似 #indent='\t' 指第一个urlset的空格个数 addindent='\t'为后面的元素的空格间距。 #doc.writexml(fp, indent='\t', addindent='\t', newl='\n', encoding="utf-8") doc.writexml(fp, addindent=' ', newl='\n', encoding="utf-8") _ux=UsestudioXML() _ux.apiSitemap() _ux.apiXML()