Golang: Wyodrębnij dane z kanału RSS
Agencja internetowa » Wiadomości cyfrowe » Golang: Wyodrębnij dane z kanału RSS

Golang: Wyodrębnij dane z kanału RSS

Dla tych, którzy przyjdą zobaczyć składnię Go, wiedz, że pomimo mylącej składni na pierwszy rzut oka, jest to jednak łatwe do zrozumienia i łatwe do zrozumienia po 2-3 godzinach ćwiczeń. Ze swojej strony, na początku po prostu odkryłem Idź język (Golang) przez moją ostatnią miłość… Docker! Następnie poszedłem na spotkanie poświęcone temu tematowi i po 1 godzinie pracy nad projektem, który jest teraz głęboko w moim GitLabie, zacząłem pracować nad dwoma projektami, w tym kwestiami wydajności i konserwacji kodu, które są kluczowymi punktami wykonalnego projektu.

Na potrzeby pisania tego posta wyodrębniłem problem z jednego z moich projektów. Mianowicie to, że użycie języka jest moim zdaniem dużym atutem, ponieważ ten najnowszy język jest niezwykle łatwy w kompilacji i ułatwia korzystanie z zewnętrznych bibliotek… Kiedy jest to konieczne, ponieważ Go ma różne pakiety dobrze wyczuwalny. W tym przypadku tutaj pakiet kodowanie/xml.

Poniższy przykład ilustruje wyodrębnianie danych z pliku a RSS ale tę metodę można łatwo dostosować do ekstrakcji a sitemap lub jakikolwiek inny XML poprawnie skonstruowany.

demonstracja

Aby zilustrować moją pracę, wziąłem przepływ RSS podany jako przykład na stronie Wikipedii.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?xmlversion=”1.0” kodowanie = ”UTF-8"?>
<rss wersja=„2.0”>
<kanał>
<tytuł>strona pon</tytuł>
<opis>To jest przykład kanału RSS 2.0</opis>
<data ostatniej kompilacji>Sob., 07 września 2002 r. 00:00:01 GMT</data ostatniej kompilacji>
<link>http://www.example.org</link>
<pozycja>
<tytuł>Nowości nr 1</tytuł>
<opis>To moja pierwsza wiadomość</opis>
<pubDate>Sob., 07 września 2002 r. 00:00:01 GMT</pubDate>
<link>http://www.example.org/actu1</link>
</pozycja>
<pozycja>
<tytuł>Nowości nr 2</tytuł>
<opis>To moja druga wiadomość</opis>
<pubDate>Sob., 07 września 2002 r. 00:00:01 GMT</pubDate>
<link>http://www.example.org/actu2</link>
</pozycja>
</kanał>
</rss>

Aby przeanalizować ten strumień, potrzebujesz nie więcej niż 45 linii, pakiet et importować Zrozumiany. A oto dziecko:

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
pakiet główny
importować (
„kodowanie/xml”
"io/itool"
"dziennik"
"kość"
)
rodzaj Pozycja struct {
XMLName xml.Nazwa `xml:"pozycja"`
Opis ciąg `xml:"opis"`
Połączyć ciąg `xml:"łącze"`
PubData ciąg `xml:"pubDate"`
Tytuł ciąg `xml:"tytuł"`
}
rodzaj rss struct {
XMLName xml.Nazwa `xml:"rss"`
Przedmioty[]Przedmiot `xml:"kanał>element"`
}
funkcjonować główny() {
plik, błąd := ioutil.ReadFile("/go/wiadomości.rss")
if błąd!= zero {
log.Println(błąd)
powrót
}
v := rss{}
err = xml.Unmarshal(plik, &v)
if błąd!= zero {
log.Println(błąd.Błąd())
os.Wyjście(1)
}
dla _, pozycja:= zasięg v.Przedmioty {
log. Println("Tytuł: ", Nazwa przedmiotu)
log. Println("Opis: ", opis przedmiotu)
log. Println("Link: ", element.Link)
log. Println("Data publikacji: ", element.Data Publikacji)
}
}

W tym kodzie widzimy definicję struktur. Najpierw przeczytaj plik aktualności.rss który będzie zawierał treść Twojego kanału.

Wynik

Oto wynik:

1
2
3
4
5
6
7
8
9
root@6c38532f4658:/go# uruchom main.go
2015/08/20 07:05:50 Tytuł: Aktualności nr 1
2015/08/20 07:05:50 Opis: To moja pierwsza wiadomość
2015/08/20 07:05:50 Link:  http://www.example.org/actu1
2015/08/20 07:05:50 PubDate: sob., 07 września 2002 00:00:01 GMT
2015/08/20 07:05:50 Tytuł: Aktualności nr 2
2015/08/20 07:05:50 Opis: To moja druga wiadomość
2015/08/20 07:05:50 Link:  http://www.example.org/actu2
2015/08/20 07:05:50 PubDate: sob., 07 września 2002 00:00:01 GMT

I oto udana operacja! Nie krępuj się odpowiedzieć i przesłać opinię, jeśli ten artykuł można ulepszyć.

★ ★ ★ ★ ★