Parsing é analisar e interpretar a estrutura de um documento. O processo de análise pode incluir a extração de elementos, atributos ou dados específicos do documento e a verificação de que o documento está bem formatado enquanto segue padrões ou regras específicas. A análise é usada principalmente para extrair dados de páginas da Web ou manipular a estrutura das páginas da Web antes de exibi-las aos usuários.
Go fornece pacotes para trabalhar com documentos, incluindo os formatos HTML e XML comumente usados em páginas da web. O html O pacote fornece funções para tokenização e análise de HTML.
O pacote HTML
O html O pacote fornece um tokenizador e analisador compatível com HTML5 para analisar e manipular documentos HTML, percorrer a árvore de análise e manipular a estrutura da árvore. O html package é um pacote integrado da biblioteca padrão do Go.
Uma das principais características do html pacote é o Analisar função que pode analisar documentos HTML e retornar o nó raiz da árvore de análise, de onde você pode usar funções como a Primeiro filho e PróximaIrmão para navegar na árvore e extrair informações do documento. O pacote também fornece o ParseFragment função para analisar fragmentos de documentos HTML.
O EscapeString função é útil para escapar de caracteres especiais em strings para inclusão mais segura em HTML; você pode usar esta função para evitar script entre sites (XSS) ataques convertendo caracteres especiais em suas entidades HTML correspondentes.
Para começar com html pacote, você pode importar o pacote para seus arquivos de projeto Go.
importar"golang.org/x/net/html"
O html pacote não fornece nenhuma função para gerar HTML. Em vez disso, você pode usar o pacote html/template, que oferece um conjunto de funções para gerar modelos HTML. O html/modelo pacote fornece uma função modelo. HTMLEscape para escrever versões com escape de HTML para um gravador de resposta.
O html/modelo O pacote também faz parte da biblioteca padrão, e aqui está como você pode importar o pacote.
importar"html/modelo"
O html package é o pacote de templates mais popularmente usado no ecossistema Go e suporta várias operações e tipos de dados.
Analisando HTML em Go
O Analisar função do html O pacote ajuda na análise de texto e documentos HTML. O Analisar função leva em um io. Leitor instância, pois é um primeiro argumento contendo o documento do arquivo e um *html. Nó instância, que é o nó raiz do documento HTML
Veja como você pode usar o Analisar função para analisar uma página da web e retornar todos os URLs na página da web.
importar (
"fmt"
"golang.org/x/net/html"
"rede/http"
)funçãoprincipal() {
// Envia uma solicitação HTTP GET para a página da web example.com
resp, erro := http. Pegar(" https://www.example.com")
se erro != nada {
fmt. Imprimirln("Erro:", erro)
retornar
}
adiar resp. Corpo. Fechar()// Use o pacote html para analisar o corpo da resposta da solicitação
doc, erro := html. Analisar (resp. Corpo)
se erro != nada {
fmt. Imprimirln("Erro:", erro)
retornar
}
// Encontre e imprima todos os links na página da web
var links []corda
var link função(*html. Nó)
ligação = função(n *html. Nó) {
se n. Digite == html. ElementNode && n. Dados == "a" {
para _, a := faixa n. Atr {
se a. Chave == "href" {
// adiciona uma nova entrada de link quando o atributo corresponde
links = acrescentar(ligações, A. Vai)
}
}
}// percorre o HTML da página da web a partir do primeiro nodo filho
para c:= n. Primeiro filho; c != nada; c = c. PróximaIrmão {
ligação (c)
}
}
link (doc)
// percorre a fatia de links
para _, l := faixa links {
fmt. Imprimirln("Link:", eu)
}
}
O principal A função envia uma solicitação HTTP GET para o site com o Pegar função do http package e recupera o corpo da resposta da página. O Analisar função do html pacote analisa o corpo da resposta e retorna o documento HTML.
O links variável é a fatia de strings que conterá os URLs da página da web. O link função recebe a referência do ponteiro para o Nó método para o html pacote, e o Chave O método da instância do atributo do nó retorna os dados contidos em um atributo especificado (neste caso, href). A função percorre o documento com o PróximaIrmão método do Primeiro filho node para imprimir cada URL na página da web. Por fim, o loop for imprime todas as URLs do links fatiar.
Aqui está o resultado da operação.
Gerando HTML em Go
O html/modelo O pacote fornece um conjunto de funções para a análise e execução segura e eficiente de modelos HTML. A embalagem foi projetada para uso em conjunto com o html pacote, que fornece funções para analisar e manipular HTML.
Você pode gerar HTML para renderização do lado do servidor com o html/modelo pacote. A geração de HTML é útil para muitos casos de uso, como envio de e-mails, renderização de front-end do lado do servidor e muito mais. Você pode usar tipos de dados Go integrados, como mapas e estruturas, para interagir e manipular o HTML da sua página da web.
Você precisará entender Go HTML template template para gerar HTML com sucesso com o html/modelo pacote.
importar (
"html/modelo"
"os"
)tipo página da Internet estrutura {
Título corda
Cabeçalho corda
Texto corda
}funçãoprincipal() {
//Define o modelo
tmpl := `{{.Título}} {{.Cabeçalho}}
{{.Texto}}
`// Definir os dados a serem usados no template
web := página da web{
Título: "Uma página de exemplo",
Cabeçalho: "Bem-vindo ao meu site!",
Texto: "Esta é a página inicial do meu site.",
}// Cria um novo template e analisa a string do template
t, err := modelo. Novo("página da Internet").Parse (tmpl)
se erro != nada {
pânico(errar)
}
// Executa o template e escreve o resultado no stdout
erro = t. Executar (os. Stdout, web )
se erro != nada {
pânico(errar)
}
}
O tmpl variável contém a string HTML. A string HTML usa a sintaxe de modelagem Go para definir o título da página, um h1 cabeçalho e um parágrafo de texto. O página da Internet struct define os campos de dados para a página da web com o Título, Cabeçalho, e Texto Campos.
O Analisar método do Novo A função do pacote de modelo cria e analisa um novo modelo com a string de modelo. O Executar A função da nova instância do modelo executa o modelo com os dados de sua instância de struct e retorna o resultado para a saída padrão (neste caso, imprime o resultado no console).
Crie aplicativos da Web com o Go
Aprender sobre análise e geração de HTML com Go é um passo na direção certa para a construção de aplicações web mais sofisticadas com Ir. Você pode usar estruturas como Gin e Echo e roteadores como Gorilla Mux e o Chi Router para construir o lado do servidor da sua web aplicativo.
Esses pacotes são construídos no rede/http package (o pacote integrado para interagir com HTTP em Go) e abstrair as complexidades de configurar servidores e roteadores em Go.