J'apprends le langage de programmation Go de google . Est-ce que quelqu'un connaît la meilleure pratique pour extraire toutes les URL d'une page Web html?
Venant du monde Java, il existe des bibliothèques pour faire le travail, par exemple jsoup , htmlparser , etc.
Le package standard de Go pour l'analyse HTML est toujours un travail en cours et ne fait pas partie de la version actuelle. Un paquet tiers que vous pourriez essayer cependant est go-html-transform . Il est activement maintenu.
Si vous connaissez jQuery, vous allez adorer GoQuery .
Honnêtement, c’est l’utilitaire HTML le plus simple et le plus puissant que j’ai trouvé dans Go, et il est basé sur le paquet HTML du référentiel go.net. (D'accord, il s'agit donc d'un logiciel de niveau supérieur au simple analyseur, car il n'expose pas les jetons HTML bruts, etc., mais si vous souhaitez réellement utiliser un document HTML, ce package vous aidera.)
Bien que le package Go pour l'analyse HTML soit toujours en cours, il est disponible dans le référentiel go.net .
Ses sources sont à code.google.com/p/go.net/html
github.com/golang/net
et il est activement développé.
Il en est fait mention dans cette récente discussion débile .
Notez qu'avec Go 1.4 (décembre 2014), comme je l’ai mentionné dans cette réponse , le package est maintenant golang.org/x/net
(voir godoc ).
Je viens de publier un package d'analyse syntaxique compatible Open Source Open Source basé sur HTML 5.0 pour Go. Vous pouvez le trouver ici
Voici l'exemple de code pour obtenir tous les liens d'une page (à partir d'éléments A):
links := make([]string)
parser := NewParser(htmlContent)
parser.Parse(nil, func(e *HtmlElement, isEmpty bool) {
if e.TagName == "link" {
link,_ := e.GetAttributeValue("href")
if(link != "") {
links = appends(links, link)
}
}
}, nil)
Quelques points à garder à l'esprit: