Last active
February 23, 2024 23:29
-
-
Save vadimkantorov/6d6875a520a5d6351b5242b3b87a641a to your computer and use it in GitHub Desktop.
Print all URLs of a standardized XML sitemap
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# https://sitemaps.org/protocol.html | |
import sys | |
import xml.dom.minidom | |
import urllib.request | |
def sitemapindex_urlset_concat(url): | |
sitemapindex = xml.dom.minidom.parse(urllib.request.urlopen(url)) | |
for sitemap in sitemapindex.getElementsByTagName('sitemap'): | |
urlset = xml.dom.minidom.parse(urllib.request.urlopen(sitemap.getElementsByTagName('loc')[0].firstChild.nodeValue)) | |
for url in urlset.getElementsByTagName('url'): | |
yield url.getElementsByTagName('loc')[0].firstChild.nodeValue | |
def sitemap_urlset_read(fp): | |
node_doc = xml.dom.minidom.parse(fp) | |
assert node_doc.documentElement.nodeName == 'urlset' | |
return [{n.nodeName : ''.join(nn.nodeValue for nn in n.childNodes if nn.nodeType == nn.TEXT_NODE) for n in node_url.childNodes if n.nodeType == n.ELEMENT_NODE} for node_url in node_doc.documentElement.getElementsByTagName('url')] | |
def sitemap_urlset_write(urlset, fp): | |
node_doc = xml.dom.minidom.Document() | |
node_root = node_doc.appendChild(node_doc.createElement('urlset')) | |
node_root.setAttribute('xmlns:xsi', 'http://www.w3.org/2001/XMLSchema-instance') | |
node_root.setAttribute('xsi:schemaLocation', 'http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd') | |
node_root.setAttribute('xmlns', 'http://www.sitemaps.org/schemas/sitemap/0.9') | |
for entry in urlset: | |
node_url = node_root.appendChild(node_doc.createElement('url')) | |
for field, value in entry.items(): | |
node_url.appendChild(node_doc.createElement(field)).appendChild(node_doc.createTextNode(str(value))) | |
node_doc.writexml(fp, addindent = ' ', newl = '\n') | |
if __name__ == '__main__': | |
#print('\n'.join(sitemapindex_urlset_concat('https://russie-libertes.org/sitemap.xml'))) | |
sitemap_path = 'sitemap.xml' | |
urlset = [ | |
dict(loc = 'http://www.example.com/1', lastmod = '2004-11-23'), | |
dict(loc = 'http://www.example.com/2', lastmod = '2004-11-24') | |
] | |
with open(sitemap_path, 'w') as f: | |
sitemap_urlset_write(urlset, f) | |
with open(sitemap_path, 'r') as f: | |
print(sitemap_urlset_read(f)) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
https://russie-libertes.org/ | |
https://russie-libertes.org/index.php/2023/01/30/conference-les-voies-de-depoutinisation-de-la-russie/ | |
https://russie-libertes.org/index.php/2023/01/21/des-russes-sopposent-a-la-guerre-en-ukraine/ | |
https://russie-libertes.org/index.php/2023/01/14/manifestation-en-soutien-a-navalny-et-toutes-les-victimes-du-regime-poutinien/ | |
https://russie-libertes.org/index.php/2023/01/03/la-paix-en-europe-ne-sera-garantie-quapres-la-depoutinisation-de-la-russie/ | |
https://russie-libertes.org/index.php/2022/11/28/rendons-chauffage-ukraine/ | |
https://russie-libertes.org/index.php/2022/11/11/exposition-dis-la-guerre/ | |
https://russie-libertes.org/index.php/2022/10/28/2012-2022-retour-sur-une-decennie-de-luttes-pour-la-liberte-et-de-repressions-en-russie/ | |
https://russie-libertes.org/index.php/2022/10/08/le-forum-face-a-la-guerre-menee-par-le-kremlin-a-eu-lieu/ | |
https://russie-libertes.org/index.php/2022/09/26/signez-notre-petition-lunion-europeenne-doit-proteger-les-russes-qui-fuient-les-repressions-et-la-mobilisation/ | |
https://russie-libertes.org/index.php/2022/09/14/face-a-la-guerre-menee-par-le-kremlin-forum-des-resistances-en-europe-7-octobre-2022/ | |
https://russie-libertes.org/index.php/2022/08/30/6-mois-de-guerre-apres-lattaque-du-24-fevrier/ | |
https://russie-libertes.org/index.php/2022/08/18/pour-un-renforcement-des-sanctions-contre-les-soutiens-de-la-guerre-menee-par-le-regime-russe-en-ukraine-et-un-statut-special-protegeant-les-opposants-a-cette-guerre/ | |
https://russie-libertes.org/index.php/2022/08/11/ilya-yashin-prisonnier-pour-la-liberte/ | |
https://russie-libertes.org/index.php/2022/07/19/russians-against-war-international-action-day-24-july/ | |
https://russie-libertes.org/index.php/2022/06/30/en-russie-de-multiples-voix-de-femmes-contre-la-guerre/ | |
https://russie-libertes.org/index.php/2022/06/24/forum-pour-une-russie-en-paix/ | |
https://russie-libertes.org/index.php/2022/06/20/gazprom-la-machine-a-milliards-de-poutine-et-ses-amis/ | |
https://russie-libertes.org/index.php/2022/06/13/les-peuples-se-revoltent-quand-lespoir-se-montre/ | |
https://russie-libertes.org/index.php/2022/06/07/russians-against-war-international-action-day-12-juin/ | |
https://russie-libertes.org/index.php/2022/06/07/nous-citoyens-russes-vivant-en-france-avons-le-devoir-dagir-et-de-nous-engager-contre-la-guerre-en-ukraine/ | |
https://russie-libertes.org/index.php/2022/05/17/russie-libertes-10-ans-de-combats/ | |
https://russie-libertes.org/index.php/2022/05/13/mobilisations-anti-guerre-pour-le-9-mai/ | |
https://russie-libertes.org/index.php/2022/05/02/nous-russie-libertes-et-lunion-des-ukrainiens-de-france-appelons-en-urgence-la-france-a-se-mobiliser-de-facon-ferme-et-solidaire-afin-de-stopper-les-importations-dhydrocarbures-rus/ | |
https://russie-libertes.org/index.php/2022/04/26/replay-de-la-conference-russie-la-censure-de-guerre-tue/ | |
https://russie-libertes.org/index.php/2022/03/31/conference-20-avril-2022-a-paris-russie-la-censure-de-guerre-tue/ | |
https://russie-libertes.org/index.php/2022/03/23/boycott-gazprom/ | |
https://russie-libertes.org/index.php/2022/03/14/signez-la-petition-guerre-en-ukraine-pour-des-sanctions-contre-les-complices-de-poutine-en-europe/ | |
https://russie-libertes.org/index.php/2022/02/27/signez-la-petition-pour-une-enquete-judiciaire-sur-les-crimes-commis-par-vladimir-poutine/ | |
https://russie-libertes.org/index.php/2022/02/24/non-a-la-guerre-de-poutine/ | |
https://russie-libertes.org/index.php/2022/01/25/non-aux-menaces-du-kremlin-contre-lukraine-non-a-la-guerre/ | |
https://russie-libertes.org/index.php/2022/01/17/manifestation-a-paris-pour-la-liberation-de-navalny-un-an-apres-son-emprisonnement-en-russie/ | |
https://russie-libertes.org/index.php/2021/11/30/ils-font-vivre-le-journalisme-en-russie/ | |
https://russie-libertes.org/index.php/2021/10/30/le-20-octobre-2021-sest-tenue-a-lhotel-de-ville-de-paris-la-conference-15-ans-sans-anna-une-parole-libre-est-elle-encore-possible-en-russie/ | |
https://russie-libertes.org/index.php/2021/09/27/15-ans-sans-anna-politkovskaia-une-parole-libre-est-elle-encore-possible-en-russie/ | |
https://russie-libertes.org/index.php/2021/09/22/russie-des-elections-falsifiees-qui-rendent-impossible-la-reconnaissance-du-resultat/ | |
https://russie-libertes.org/index.php/2021/09/17/comment-le-kremlin-verrouille-les-elections-en-russie/ | |
https://russie-libertes.org/index.php/2021/08/25/1-an-apres-la-tentative-dassassinat-dalexei-navalny/ | |
https://russie-libertes.org/index.php/2021/05/30/pour-la-liberation-de-roman-protasevich-et-sofia-sapega/ | |
https://russie-libertes.org/index.php/2021/05/04/rassemblement-en-soutien-a-la-societe-civile-russe/ | |
https://russie-libertes.org/index.php/2021/04/05/alexei-navalny-en-danger-signez-la-petition-pour-sa-liberation/ | |
https://russie-libertes.org/index.php/2021/03/11/invitation-online-discussion-how-can-eu-russia-relations-contribute-to-strengthening-civil-society-in-russia/ | |
https://russie-libertes.org/index.php/2021/03/04/des-parlementaires-sengagent-pour-la-liberation-dalexei-navalny/ | |
https://russie-libertes.org/index.php/2021/02/19/webinar-avec-isabelle-mandraud-julien-theron-auteurs-du-livre-poutine-la-strategie-du-desordre/ | |
https://russie-libertes.org/index.php/2021/02/12/rassemblement-a-paris-lamour-est-plus-fort-que-les-repressions-en-russie/ | |
https://russie-libertes.org/index.php/2021/02/02/liberte-pour-alexei-navalny/ | |
https://russie-libertes.org/index.php/2021/01/31/invitation-au-webinaire-comment-aider-le-mouvement-pour-la-democratie-en-russie/ | |
https://russie-libertes.org/index.php/2021/01/31/paris-31-01-21-rassemblement-pour-la-liberation-dalexei-navalny-et-de-tous-les-prisonniers-politiques-en-russie/ | |
https://russie-libertes.org/index.php/2021/01/29/video-freenavalny-appel-de-plusieurs-personnalites-francaises-et-russes/ | |
https://russie-libertes.org/index.php/2021/01/27/rassemblement-a-paris-liberez-navalny-et-tous-les-prisonniers-politiques-en-russie/ | |
https://russie-libertes.org/index.php/2021/01/23/manifestation-a-paris-pour-la-liberation-dalexei-navalny-et-des-prisonniers-politiques-en-russie/ | |
https://russie-libertes.org/index.php/2021/01/22/signez-la-petition-pour-la-liberation-immediate-de-lopposant-russe-alexei-navalny/ | |
https://russie-libertes.org/index.php/2021/01/19/russie-libertes-appelle-a-un-rassemblement-a-paris-pour-exiger-la-liberation-de-navalny/ | |
https://russie-libertes.org/index.php/2021/01/19/bonjour-tout-le-monde/ | |
https://russie-libertes.org/index.php/guide-d-emigration/ | |
https://russie-libertes.org/index.php/russie-libertes-dans-les-medias/ | |
https://russie-libertes.org/index.php/donner-2/ | |
https://russie-libertes.org/index.php/adherer/ | |
https://russie-libertes.org/index.php/nos-publications/ | |
https://russie-libertes.org/index.php/page-d-exemple/contact/ | |
https://russie-libertes.org/index.php/russie-libertes-sur-les-reseaux-sociaux/ | |
https://russie-libertes.org/index.php/page-d-exemple/questions-reponses/ | |
https://russie-libertes.org/index.php/page-d-exemple/ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment