If you're on a Linux box or something with the grep tool, you can just run:
grep -Po 'http(s?)://[^ \"()\<>]*' sitemap.xml
Nehmen wir an, ich habe eine sitemap.xml
Datei mit diesen Daten:
<url> <loc>http://domain.com/pag1</loc> <lastmod>2012-08-25</lastmod> <changefreq>weekly</changefreq> <priority>0.9</priority> </url> <url> <loc>http://domain.com/pag2</loc> <lastmod>2012-08-25</lastmod> <changefreq>weekly</changefreq> <priority>0.9</priority> </url> <url> <loc>http://domain.com/pag3</loc> <lastmod>2012-08-25</lastmod> <changefreq>weekly</changefreq> <priority>0.9</priority> </url>
Ich möchte alle Standorte daraus extrahieren (Daten zwischen <loc>
und </loc>
).
Beispielausgabe wie:
http://domain.com/pag1 http://domain.com/pag2 http://domain.com/pag3
Wie macht man das?
If you're on a Linux box or something with the grep tool, you can just run:
grep -Po 'http(s?)://[^ \"()\<>]*' sitemap.xml
Sie können hier ein Python-Skript verwenden
Mit diesem Skript werden alle Links mit http gestartet
import re f = open('sitemap.xml','r') res = f.readlines() for d in res: data = re.findall('>(http:\/\/.+)<',d) for i in data: print i
Und in Ihrem Fall finden Sie im nächsten Skript alle Daten, die in Tags eingeschlossen sind
import re f = open('sitemap.xml','r') res = f.readlines() for d in res: data = re.findall('<loc>(http:\/\/.+)<\/loc>',d) for i in data: print i
Hier ein schönes Werkzeug, um mit Regex zu spielen, wenn Sie es nicht kennen.
Wenn Sie eine Remote-Datei laden möchten, können Sie den nächsten Code verwenden
import urllib2 as ur import re f = ur.urlopen(u'http://server.com/sitemap.xml') res = f.readlines() for d in res: data = re.findall('<loc>(http:\/\/.+)<\/loc>',d) for i in data: print i
Dies könnte durch einen einzelnen sed-Befehl erreicht werden, der solider als die grep-Lösung zu sein scheint:
sed '/<loc>/!d; s/[[:space:]]*<loc>\(.*\)<\/loc>/\1/' inputfile > outputfile
(gefunden bei: linuxquestions.org )
Using XSLT
, you can render it out with XPath
/url/loc
The XSLT solution:
<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:s="http://www.sitemaps.org/schemas/sitemap/0.9"> <xsl:output method="text" /> <xsl:template match="s:url"> <xsl:value-of select="s:loc" /> <xsl:text> </xsl:text> </xsl:template> </xsl:stylesheet>