VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > Python基础教程 >
  • 如何使用Python来生成sitemap(3)

优化

一般来说,用lxml效率低并且内存占用比较大,可以直接用文件的write方法创建。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
def generate_xml(filename, url_list):
  with gzip.open(filename,"w") as f:
    f.write("""<?xml version="1.0" encoding="utf-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">\n""")
    for in url_list:
      f.write("""<url><loc>%s</loc></url>\n"""%i)
    f.write("""</urlset>""")
def append_xml(filename, url_list):
  with gzip.open(filename, 'r') as f:
    for each_line in f:
      = re.findall('<loc>(http:\/\/.+)<\/loc>', each_line)
      url_list.extend(d)
    generate_xml(filename, set(url_list))
def modify_time(filename):
  time_stamp = os.path.getmtime(filename)
  = time.localtime(time_stamp)
  return time.strftime('%Y-%m-%dT%H:%M:%S:%SZ', t)
def new_xml(filename, url_list):
  generate_xml(filename, url_list)
  root = dirname(filename)
  with open(join(dirname(root), "sitemap.xml"),"w") as f:
    f.write('<?xml version="1.0" encoding="utf-8"?>\n<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">\n')
    for in glob.glob(join(root,"*.xml.gz")):
      lastmod = modify_time(i)
      = i[len(CONFIG.SITEMAP_PATH):]
      f.write("<sitemap>\n<loc>http:/%s</loc>\n"%i)
      f.write("<lastmod>%s</lastmod>\n</sitemap>\n"%lastmod)
    f.write('</sitemapindex>')
 

相关教程