Golang: extrair dados de um feed RSS
Agência web » Notícias digitais » Golang: extrair dados de um feed RSS

Golang: extrair dados de um feed RSS

Para aqueles que vêm para ver a sintaxe de Go, saiba que apesar de sua sintaxe confusa à primeira vista, não deixa de ser fácil de entender e fácil de entender após 2/3 horas de prática. De minha parte, a princípio simplesmente descobri o Língua Go (Golang) através do meu último amor… Docker! Posteriormente, fui a um meetup que tratava desse assunto e depois de trabalhar 1 hora em um projeto agora no fundo do meu GitLab, comecei a trabalhar em dois projetos, incluindo questões de desempenho e manutenibilidade. do código são pontos-chave de um projeto viável.

Para escrever este post, extraí um problema de um dos meus projetos. Nomeadamente que a utilização da linguagem é na minha opinião uma grande mais valia, pois esta linguagem recente é extremamente fácil de compilar e facilita a utilização de bibliotecas externas... Quando necessário porque Go tem uma variedade de pacotes bem sentido. Neste caso, o pacote codificação / xml.

O exemplo a seguir demonstra a extração de dados de um RSS mas este método pode ser facilmente adaptado para extrair um Mapa do Site ou qualquer outro XML devidamente construído.

demonstração

Para ilustrar meu trabalho, peguei o fluxo RSS dado como um exemplo na página da Wikipedia.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?versão xml=”1.0” codificação =” UTF-8"?>
<rss versão="2.0">
<canal>
<título>Meu site</título>
<descrição>Este é um exemplo de feed RSS 2.0</descrição>
<lastBuildData>Sáb, 07 de setembro de 2002 00:00:01 GMT</lastBuildData>
<link>http://www.example.org</link>
<item>
<título>Notícias nº 1</título>
<descrição>Esta é a minha primeira notícia</descrição>
<pubDate>Sáb, 07 de setembro de 2002 00:00:01 GMT</pubDate>
<link>http://www.example.org/actu1</link>
</item>
<item>
<título>Notícias nº 2</título>
<descrição>Esta é a minha segunda notícia</descrição>
<pubDate>Sáb, 07 de setembro de 2002 00:00:01 GMT</pubDate>
<link>http://www.example.org/actu2</link>
</item>
</canal>
</rss>

Para analisar este fluxo, você não precisa de mais de 45 linhas, pacote et importar Entendido. E aqui está o bebê:

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
pacote principal
importar (
"codificação/xml"
"io/tool"
"registro"
"osso"
)
tipo item struct {
XMLName xml.Name `xml:"item"`
Descrição corda `xml:"descrição"`
Ligação corda `xml:"link"`
PubData corda `xml:"pubDate"`
Título corda `xml:"título"`
}
tipo rss struct {
XMLName xml.Name `xml:"rss"`
Itens[]Item `xml:"canal>item"`
}
função principal() {
arquivo, erro := ioutil.ReadFile("/go/news.rss")
if erro! = zero {
log.Println(err)
retorno
}
v := Rss{}
err = xml.Unmarshal(arquivo, &v)
if erro! = zero {
log.Println(err.Error())
os.Sair(1)
}
para _, artigo:= alcance v. Itens {
log. Println("Título: ", título do item)
log. Println("Descrição: ", descrição do item)
log. Println("Link: ", item.Link)
log. Println("PubData: ", item.PubDate)
}
}

Neste código, vemos a definição das estruturas. Primeiro, leia o arquivo notícias.rss que conterá o conteúdo do seu feed.

Resultado

Aqui está o resultado:

1
2
3
4
5
6
7
8
9
root@6c38532f4658:/ir# vá executar main.go
2015/08/20 07:05:50 Título: Notícias nº 1
2015/08/20 07:05:50 Descrição: Esta é a minha primeira notícia
2015/08/20 07:05:50 Link:  http://www.example.org/actu1
2015/08/20 07:05:50 PubData: Sáb, 07 de setembro de 2002 00:00:01 GMT
2015/08/20 07:05:50 Título: Notícias nº 2
2015/08/20 07:05:50 Descrição: Esta é a minha segunda notícia
2015/08/20 07:05:50 Link:  http://www.example.org/actu2
2015/08/20 07:05:50 PubData: Sáb, 07 de setembro de 2002 00:00:01 GMT

E aqui está a operação bem-sucedida! Sinta-se à vontade para responder e fornecer feedback se este artigo puder ser melhorado.

★ ★ ★ ★ ★