Golang: Bir RSS beslemesinden veri ayıklayın
Web ajansı » Dijital haberler » Golang: Bir RSS beslemesinden veri ayıklayın

Golang: Bir RSS beslemesinden veri ayıklayın

Sözdizimini görmeye gelenler için Go, bilin ki ilk bakışta kafa karıştıran sözdizimine rağmen yine de 2/3 saatlik pratikten sonra kavranması ve anlaşılması kolaydır. Benim açımdan, ilk başta basitçe keşfettim Git dili (Golang) son aşkım aracılığıyla… Docker! Daha sonra, bu konuyla ilgili bir buluşmaya gittim ve GitLab'imin derinliklerinde bir proje üzerinde 1 saat çalıştıktan sonra, kodun uygulanabilir bir projenin kilit noktaları olan performans ve bakım sorunları da dahil olmak üzere iki proje üzerinde çalışmaya başladım.

Bu yazıyı yazmak için projelerimden birinden bir sayı çıkardım. Yani, dilin kullanımı bence büyük bir avantaj, çünkü bu yeni dilin derlenmesi son derece kolay ve harici kütüphanelerin kullanımını kolaylaştırıyor... Gerektiğinde çünkü Go'nun çeşitli paketleri var iyi hissettim Bu durumda, paket kodlama/xml.

Aşağıdaki örnek, bir dosyadan veri çıkarmayı gösterir. RSS ancak bu yöntem kolayca bir ayıklamak için uyarlanabilir Site haritası veya herhangi biri XML uygun şekilde inşa edilmiştir.

gösteri

Çalışmamı göstermek için akışı aldım RSS Wikipedia sayfasında örnek olarak verilmiştir.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?xml sürümü=”1.0” kodlama=”UTF-8başlıklı bir kılavuz yayınladı?>
<rss versiyon="2.0">
<kanal>
<başlık>Sitem</başlık>
<tanım>Bu, RSS 2.0 beslemesine bir örnektir.</tanım>
<son Yapım Tarihi>Cmt, 07 Eylül 2002 00:00:01 GMT</son Yapım Tarihi>
<Link>http://www.example.org</Link>
<madde>
<başlık>1 Numaralı Haber</başlık>
<tanım>bu benim ilk haberim</tanım>
<yayın tarihi>Cmt, 07 Eylül 2002 00:00:01 GMT</yayın tarihi>
<Link>http://www.example.org/actu1</Link>
</madde>
<madde>
<başlık>2 Numaralı Haber</başlık>
<tanım>bu ikinci haberim</tanım>
<yayın tarihi>Cmt, 07 Eylül 2002 00:00:01 GMT</yayın tarihi>
<Link>http://www.example.org/actu2</Link>
</madde>
</kanal>
</rss>

Bu akışı ayrıştırmak için en fazla 45 satıra ihtiyacınız var, paket et ithalat Anlaşıldı. Ve işte bebek:

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 ana
ithalat (
"kodlama/xml"
"io/itool"
"kayıt"
"kemik"
)
tip + yapı {
XMLAdı xml.Ad `xml:"öğe"`
Açıklama dizi `xml:"açıklama"`
Link dizi `xml:"bağlantı"`
Yayın Tarihi dizi `xml:"yayınDate"`
Başlık dizi `xml:"başlık"`
}
tip rss yapı {
XMLAdı xml.Ad `xml:"rss"`
Öğeler[]Öğe `xml:"kanal>öğe"`
}
func ana() {
dosya, hata := ioutil.ReadFile("/git/haber.rss")
if hata!= sıfır {
log.Println(hata)
dönüş
}
v := Rss{}
hata = xml.Unmarshal(dosya, &v)
if hata!= sıfır {
log.Println(err.Error())
os.Çıkış(1)
}
için _, öğe:= menzil v.Öğeler {
log.Println("Başlık: ", Ürün başlığı)
log.Println("Tanım: ", Ürün Açıklaması)
log.Println("Bağlantı: ", öğe.Bağlantı)
log.Println("Yayın Tarihi: ", item.PubDate)
}
}

Bu kodda yapıların tanımını görüyoruz. Önce dosyayı okuyun haber.rss beslemenizin içeriğini içerecektir.

Sonuç

İşte sonuç:

1
2
3
4
5
6
7
8
9
root@6c38532f4658:/git# git main.go'yu çalıştır
2015/08/20 07:05:50 Başlık: Haber No. 1
2015/08/20 07:05:50 Açıklama: Bu benim ilk haberim
2015/08/20 07:05:50 Link:  http://www.example.org/actu1
2015/08/20 07:05:50 Yayın Tarihi: Cmt, 07 Eylül 2002 00:00:01 GMT
2015/08/20 07:05:50 Başlık: Haber No. 2
2015/08/20 07:05:50 Açıklama: Bu ikinci haberim
2015/08/20 07:05:50 Link:  http://www.example.org/actu2
2015/08/20 07:05:50 Yayın Tarihi: Cmt, 07 Eylül 2002 00:00:01 GMT

Ve işte başarılı operasyon! Bu makale geliştirilebilirse yanıt vermekten ve geri bildirimde bulunmaktan çekinmeyin.

★ ★ ★ ★ ★