在django-sitemap中的sitemaps字典中添加拆分字典

时间:2014-04-28 11:18:47

标签: python django python-2.7 django-sitemaps

我有一个包含100,000个网址的列表,目前我只使用Django sitemaps为这些网址生成一个books.xml网站地图。

class Books(Sitemap):

    changefreq = "daily"
    priority = 0.5

    def items(self):
          #Do stufff
          return list_of_urls

但我想要的是将这个XML分成几部分,每个XML文件只包含10,000个URL。这些XML文件的名称将为books1.xmlbooks2.xml等。

所以,例如,如果我在books.xml中有46,000个网址,那么拆分的XML将是

books1.xml  #will contain 10,000 urls
books2.xml  #will contain 10,000 urls
books3.xml  #will contain 10,000 urls
books4.xml  #will contain 10,000 urls
books5.xml  #will contain 6,000 urls

def get_books_list():
        #get all the urls
        #splited list into lists of size 10000 each

        return blst  # blst is the list of lists  each list will contain 10k urls

class Products(Sitemap):

    changefreq = "daily"
    priority = 0.5
    def items(self):
        blist = get_books_list()
        for l in blist:
            sitemaps['books'+blist.index(l)+1] = l  #dictionary with key as a name of file and value is the list of 10k urls

所以我得到了拆分列表,现在我无法获得进一步处理的任何线索。

我有2-3个另外的站点地图,这些地图将附加到这本词典中 所以它会是一些东西

sitemaps = {'books1': ,
            'books2': ,
            'books3': ,
            'index':,
            'main_sitemap':}

我想要这个结果连接字典。

1 个答案:

答案 0 :(得分:0)

您可以在以下链接中阅读在Django中管理文件

https://docs.djangoproject.com/en/1.6/topics/files/

它基本上解释创建文件:

  1. DefaultStorage (可以是本地系统或云端)和
  2. FileSystemStorage (仅限本地存储)。
  3. 这非常简单直接。


    进一步处理

    希望您了解处理多个Sitemaps文件的进一步过程。您必须创建索引文件,其中包含指向所有子站点地图文件的链接。这样Web爬虫就可以读取索引文件并创建索引。 有关索引文件的详细信息,请参阅此处:https://support.google.com/webmasters/answer/71453?hl=en&ref_topic=4581190

    此外,作为标准,最多只有 50,000个网址应该驻留在一个Sitemap文件中。 有关指南和格式的详细信息,请参阅此处:https://support.google.com/webmasters/answer/183668?hl=en&ref_topic=4581190