Python实战 - Django自动化创建sitemap

什么是sitemap

自建网站的朋友应该都了解过sitemap, 百度的站长平台和谷歌的Search Console都允许站长提交sitemap.xml。

那么这个文件具体有啥作用呢:就小T老师看来,最大的作用就是让搜索引擎更加友好的收录你的URL, 也就是网站链接。

如果一个网站没有sitemap,正常情况下,爬虫会从首页开始遍历提取网站链接,然后再进行抓取,这个过程一般来说会比较漫长,尤其涉及到链接的更新的时候。

对于搜索引擎来说是一个巨大的网络消耗,对于站长来说则收录会比较慢。

sitemap的出现,让网站可以更有效率的方式来提供链接给搜索引擎,省却中间环节,加量不加价:P

如何创建sitemap文件

  1. 人肉办法 这个办法比较土,也就是按照sitemap的协议,人工去修改调整sitemap文件,如果对于小型个人博客网站,考虑到更新频率一般不会特别高,省事的话也可行。

  2. 自动化办法 通过自动化脚本来生成,这个就很灵活了,可以通过各种自动化脚本,按照模板来生成,不做讨论

  3. 利用框架自动生成 框架有很多,考虑本篇主要以Python作为示例,所以选择一个Python下比较流行的Django框架作为例子来说明,直接上代码:

from django.contrib.sitemaps import views as sitemaps_views
from django.contrib.sitemaps import Sitemap

from .models import Article

class ArticleSitemap(Sitemap):
    changefreq = "monthly"
    priority = 1.0
    limit = 100
    def items(self):
        return Article.objects.all()

    def lastmod(self, obj):
        return obj.create_time


sitemaps = {
    'article': ArticleSitemap,
}


urlpatterns = [
    url(r'^sitemap\.xml$',
        sitemaps_views.index,
        {'sitemaps': sitemaps, 'sitemap_url_name': 'sitemaps'}),
    url(r'^sitemap-(?P<section>.+)\.xml$',

另外,需要在settings.py的INSTALL_APP中加上django.contrib.sitemaps

Django框架自动生成sitemap的优点

  • 可以自动化生成sitemap.xml,不用人工维护
  • 如果有新增加的内容页面,也可以自动进行sitemap.xml的更新
  • sitemap.xml自动分页,这种情况是针对链接较多的时候,单个sitemap.xml会非常巨大,可以通过分页来解决。

场景化方案建议

  • 链接数较少的网站,小于10W级别 建议使用方案3,实际使用起来,简单,方便,不用人工参与,站长只用专心维护好内容即可

  • 链接数较多的网站,大于10W级别 建议使用方案2,通过脚本产生sitemap.xml的静态文件,然后通过nginx的来代理处理。为什么要这样做,由于如果采用方案2的话,每次爬虫访问sitemap文件,由于要进行分页,会频繁的count和limit计算,对数据库产生很大的负担,导致网站的服务能力急剧下降。

部署效果

当提交sitemap后,谷歌的反应是很迅速的,立即开始抓取,百度的反应比较慢,可能还需要对网站进行观察。


相关推荐
  1. 宝贝归谁
  2. 车企数字化转型(下)
  3.  巫师换心记
  4. 央媒聚焦!国庆假期173.78万人次打卡大美黄陂
  5. 机器学习 - 监督学习概述
  6. 南京汉开书院
  7. 武汉一女子七天被骗220万
  8. 中山市坦洲镇同胜小学
  9. 民歌的鸟儿
  10. 武汉女子网上做兼职被骗六十五万
  11. 马上得天下
  12. 武汉动物园火烈鸟孔雀排队打疫苗
  13. 沈阳市法库县育豪智能双语幼儿园 - 沈阳幼儿园黄页
  14. 望娘滩
  15. 宝宝奶粉用自来水还是纯净水 - 育儿经验
  16. 北京市丰台区东高地第三小学(东高地三小)
  17. Python基础视频教程 - 七天学会Python
  18. 淄博市博山区考院小学
  19. 武汉市博物馆一日游
  20. 脱单!武汉的相亲角在哪你知道吗?
  21. 早产儿易发生哪些疾病 - 育儿经验
  22. 淄博市淄川区岭子镇中心小学
  23. 江苏省常州高级中学
  24. 一休双语幼儿园 - 石家庄幼儿园黄页
  25. 上海市浦东新区上南三村小学
  26. 启动TOGAF之前的10个步骤 - TOGAF系列教程(2)
  27. 青龙满族自治县第一中学(青龙一中)
  28. 事发武汉农夫山泉矿泉水内惊现大量虫卵
  29. 惠州市第三小学
  30. 柳州市柳城县小白鸽幼儿园 - 柳州市幼儿园黄页
  31. 乾隆横招贼要店
  32. 江门市新会区大泽镇沿江小学
  33. 北师大附中京西校区
  34. 滦平县第一中学(滦平一中)
  35. 约法三章
  36. 流泪的老鼠米米
  37. 沈阳市于洪区贝莱特幼稚园 - 沈阳幼儿园黄页
  38. Centos7中配置 Putty免密码登录
  39. Python公开课 - 爬虫介绍
  40. 武汉推出越王勾践剑交通卡
  41. 长沙市宁乡县城北中学
  42. Python公开课 - 数据抓取之Selenium使用(上)
  43. 杨营镇第二中学
  44. 易中天给英雄武汉的一首诗 - 武汉新鲜事
  45. 百名网媒总编辑登上知音号欣赏武汉夜色
  46. 成都市青羊区战旗幼稚园 - 成都市幼儿园黄页
  47. 青岛东胜路小学
  48. 宜春一中
  49. 微服务架构 Spring Cloud 理解与思考
  50. 淄博市张店区湖田中学
  51. 警方通报:武汉男子持刀至五死一伤,嫌犯已跳桥
  52. 育童幼儿园 - 石家庄幼儿园黄页
  53. 国王是个糊涂虫
  54. 沧州市黄骅市新星艺术幼儿园 - 沧州幼儿园黄页
  55. 遵义市正安县瑞溪镇中心幼儿园 - 遵义市幼儿园黄页
  56. 西安雁塔区东仪路小学
  57. 长沙市浏阳市大瑶镇料源完全小学
  58. 洛阳市河洛中学(初中)
  59. 鲑鱼王
  60. 什么是TCP中三次握手和四次挥手