Golang: Daten aus einem RSS-Feed extrahieren
Webagentur » Digitale Nachrichten » Golang: Daten aus einem RSS-Feed extrahieren

Golang: Daten aus einem RSS-Feed extrahieren

Für diejenigen, die kommen, um die Syntax von zu sehen Go, wissen, dass es trotz seiner auf den ersten Blick verwirrenden Syntax leicht zu verstehen und nach 2/3 Stunden Übung leicht zu verstehen ist. Ich für meinen Teil habe das zunächst einfach entdeckt Go-Sprache (Golang) über meine neuste Liebe… Docker! Anschließend ging ich zu einem Meetup, das sich mit diesem Thema befasste, und nachdem ich 1 Stunde an einem Projekt gearbeitet hatte, das jetzt tief in meinem GitLab steckt, begann ich, an zwei Projekten zu arbeiten, darunter Performance- und Wartbarkeitsprobleme. des Codes sind Schlüsselpunkte eines tragfähigen Projekts.

Für das Schreiben dieses Beitrags habe ich ein Problem aus einem meiner Projekte extrahiert. Nämlich, dass die Verwendung der Sprache meiner Meinung nach ein großer Vorteil ist, da diese junge Sprache extrem einfach zu kompilieren ist und die Verwendung externer Bibliotheken erleichtert ... Bei Bedarf, weil Go hat eine Vielzahl von Paketen gut gefühlt. In diesem Fall hier das Paket Kodierung/xml.

Das folgende Beispiel zeigt das Extrahieren von Daten aus a RSS aber diese Methode kann leicht angepasst werden, um a zu extrahieren Sitemap oder irgendein anderes XML richtig konstruiert.

Demonstration

Um meine Arbeit zu veranschaulichen, habe ich den Fluss genommen RSS als Beispiel auf der Wikipedia-Seite angegeben.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?xmlversion=”1.0” Codierung = „UTF-8" ?>
<rss Version="2.0">
<Kanal>
<Titel>Meine Seite</Titel>
<Beschreibung>Dies ist ein Beispiel für einen RSS 2.0-Feed</Beschreibung>
<letztesBaudatum>Samstag, 07. September 2002 00:00:01 GMT</letztesBaudatum>
<Link>http://www.example.org</Link>
<Artikel>
<Titel>Nachrichten Nr. 1</Titel>
<Beschreibung>Das ist meine erste Nachricht</Beschreibung>
<pubdate>Samstag, 07. September 2002 00:00:01 GMT</pubdate>
<Link>http://www.example.org/actu1</Link>
</Artikel>
<Artikel>
<Titel>Nachrichten Nr. 2</Titel>
<Beschreibung>Das ist meine zweite Neuigkeit</Beschreibung>
<pubdate>Samstag, 07. September 2002 00:00:01 GMT</pubdate>
<Link>http://www.example.org/actu2</Link>
</Artikel>
</Kanal>
</rss>

Um diesen Stream zu parsen brauchen Sie nicht mehr als 45 Zeilen, Paket et importieren Verstanden. Und hier ist das Baby:

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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
Paket Haupt-
importieren (
"kodierung/xml"
"io/itool"
"Protokoll"
"Knochen"
)
tippe Artikel struct {
XMLName xml.Name `xml:"Element"`
Beschreibung Schnur `xml:"Beschreibung"`
Link Schnur `xml:"link"`
Erscheinungsdatum Schnur `xml:"Veröffentlichungsdatum"`
Titel Schnur `xml:"Titel"`
}
tippe Rss struct {
XMLName xml.Name `xml:"rss"`
Artikel[]Artikel `xml:"channel>item"`
}
Funkt Haupt-() {
Datei, err := ioutil.ReadFile("/go/news.rss")
if ähm!= Null {
log.Println(err)
Rückkehr
}
v := RSS{}
err = xml.Unmarshal(Datei, &v)
if ähm!= Null {
log.Println (Fehler. Fehler ())
os.Exit(1)
}
für _, Artikel:= Angebot v.Artikel {
log. Println("Titel: ", Artikel.Titel)
log. Println("Beschreibung: ", Artikelbeschreibung)
log. Println("Verknüpfung: ", Artikel.Link)
log. Println("Veröffentlichungsdatum: ", item.Veröffentlichungsdatum)
}
}

In diesem Code sehen wir die Definition der Strukturen. Lesen Sie zuerst die Datei Nachrichten.rss die den Inhalt Ihres Feeds enthält.

Ergebnis

Voici le resultat :

1
2
3
4
5
6
7
8
9
root@6c38532f4658:/go# starte main.go
2015 08:20:07 Titel: News Nr. 05
2015 08:20:07 Beschreibung: Das ist meine erste Neuigkeit
2015/08/20 07:05:50 Link:  http://www.example.org/actu1
2015 08:20:07 Veröffentlichungsdatum: Samstag, 05. September 50 07:2002:00 GMT
2015 08:20:07 Titel: News Nr. 05
2015 08:20:07 Beschreibung: Das ist meine zweite Neuigkeit
2015/08/20 07:05:50 Link:  http://www.example.org/actu2
2015 08:20:07 Veröffentlichungsdatum: Samstag, 05. September 50 07:2002:00 GMT

Und hier ist die erfolgreiche Operation! Sie können gerne antworten und Feedback geben, wenn dieser Artikel verbessert werden kann.

★ ★ ★ ★ ★