{"id":12403,"date":"2022-09-30T16:29:10","date_gmt":"2022-09-30T10:59:10","guid":{"rendered":"https:\/\/jassweb.com\/solved\/solved-parsing-list-items-from-html-with-go\/"},"modified":"2022-09-30T16:29:10","modified_gmt":"2022-09-30T10:59:10","slug":"solved-parsing-list-items-from-html-with-go","status":"publish","type":"post","link":"https:\/\/jassweb.com\/solved\/solved-parsing-list-items-from-html-with-go\/","title":{"rendered":"[Solved] Parsing list items from html with Go"},"content":{"rendered":"<p> [ad_1]<br \/>\n<\/p>\n<div id=\"answer-29319185\" class=\"answer js-answer accepted-answer js-accepted-answer\" data-answerid=\"29319185\" data-parentid=\"29318672\" data-score=\"1\" data-position-on-page=\"1\" data-highest-scored=\"1\" data-question-has-accepted-highest-score=\"1\" itemprop=\"acceptedAnswer\" itemscope itemtype=\"https:\/\/schema.org\/Answer\">\n<div class=\"post-layout\">\n<div class=\"votecell post-layout--left\"><\/div>\n<div class=\"answercell post-layout--right\">\n<div class=\"s-prose js-post-body\" itemprop=\"text\">\n<p>You likely want to use the <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/godoc.org\/golang.org\/x\/net\/html\">golang.org\/x\/net\/html package<\/a>.<br \/>\nIt&#8217;s not in the Go standard packages, but instead in the <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/golang.org\/pkg\/#subrepo\">Go Sub-repositories<\/a>. (The sub-repositories are part of the Go Project but outside the main Go tree. They are developed under looser compatibility requirements than the Go core.)<\/p>\n<p>There is <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/godoc.org\/golang.org\/x\/net\/html#example-Parse\">an example<\/a> in that documentation that may be similar to what you want.<\/p>\n<p>If you need to stick with the Go standard packages for some reason, then<br \/>\nfor &#8220;typical HTML&#8221; you can use <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/golang.org\/pkg\/encoding\/xml\/#Decoder\"><code>encoding\/xml<\/code><\/a>.<\/p>\n<p>Both packages tend to use an <code>io.Reader<\/code> for input. If you have a <code>string<\/code> or <code>[]byte<\/code> variable you can wrap them with <code>strings.NewReader<\/code> or <code>bytes.Buffer<\/code> to get an <code>io.Reader<\/code>.<\/p>\n<p>For HTML it&#8217;s more likely you&#8217;ll come from an <code>http.Response<\/code> body<br \/>\n(make sure to close it when done).<br \/>\nPerhaps something like:<\/p>\n<pre><code>    resp, err := http.Get(someURL)\n    if err != nil {\n        return err\n    }\n    defer resp.Body.Close()\n\n    doc, err := html.parse(resp.Body)\n    if err != nil {\n        return err\n    }\n    \/\/ Recursively visit nodes in the parse tree\n    var f func(*html.Node)\n    f = func(n *html.Node) {\n        if n.Type == html.ElementNode &amp;&amp; n.Data == \"a\" {\n            for _, a := range n.Attr {\n                if a.Key == \"href\" {\n                    fmt.Println(a.Val)\n                    break\n                }\n            }\n        }\n        for c := n.FirstChild; c != nil; c = c.NextSibling {\n            f(c)\n        }\n    }\n    f(doc)\n}\n<\/code><\/pre>\n<p>Of course, parsing fetched web pages won&#8217;t work for pages that modify their own contents with JavaScript on the client side.<\/p>\n<\/p><\/div>\n<div class=\"mt24\"><\/div>\n<\/div>\n<p>            <span class=\"d-none\" itemprop=\"commentCount\">1<\/span> <\/p><\/div>\n<\/div>\n<p>[ad_2]<\/p>\n<p>solved Parsing list items from html with Go <\/p>\n","protected":false},"excerpt":{"rendered":"<p>[ad_1] You likely want to use the golang.org\/x\/net\/html package. It&#8217;s not in the Go standard packages, but instead in the Go Sub-repositories. (The sub-repositories are part of the Go Project but outside the main Go tree. They are developed under looser compatibility requirements than the Go core.) There is an example in that documentation that &#8230; <a title=\"[Solved] Parsing list items from html with Go\" class=\"read-more\" href=\"https:\/\/jassweb.com\/solved\/solved-parsing-list-items-from-html-with-go\/\" aria-label=\"More on [Solved] Parsing list items from html with Go\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[320],"tags":[596],"class_list":["post-12403","post","type-post","status-publish","format-standard","hentry","category-solved","tag-go"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>[Solved] Parsing list items from html with Go - JassWeb<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/jassweb.com\/solved\/solved-parsing-list-items-from-html-with-go\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"[Solved] Parsing list items from html with Go - JassWeb\" \/>\n<meta property=\"og:description\" content=\"[ad_1] You likely want to use the golang.org\/x\/net\/html package. It&#8217;s not in the Go standard packages, but instead in the Go Sub-repositories. (The sub-repositories are part of the Go Project but outside the main Go tree. They are developed under looser compatibility requirements than the Go core.) There is an example in that documentation that ... Read more\" \/>\n<meta property=\"og:url\" content=\"https:\/\/jassweb.com\/solved\/solved-parsing-list-items-from-html-with-go\/\" \/>\n<meta property=\"og:site_name\" content=\"JassWeb\" \/>\n<meta property=\"article:published_time\" content=\"2022-09-30T10:59:10+00:00\" \/>\n<meta name=\"author\" content=\"Kirat\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Kirat\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/solved-parsing-list-items-from-html-with-go\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/solved-parsing-list-items-from-html-with-go\\\/\"},\"author\":{\"name\":\"Kirat\",\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/#\\\/schema\\\/person\\\/65c9c7b7958150c0dc8371fa35dd7c31\"},\"headline\":\"[Solved] Parsing list items from html with Go\",\"datePublished\":\"2022-09-30T10:59:10+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/solved-parsing-list-items-from-html-with-go\\\/\"},\"wordCount\":171,\"publisher\":{\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/#organization\"},\"keywords\":[\"go\"],\"articleSection\":[\"Solved\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/solved-parsing-list-items-from-html-with-go\\\/\",\"url\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/solved-parsing-list-items-from-html-with-go\\\/\",\"name\":\"[Solved] Parsing list items from html with Go - JassWeb\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/#website\"},\"datePublished\":\"2022-09-30T10:59:10+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/solved-parsing-list-items-from-html-with-go\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/jassweb.com\\\/solved\\\/solved-parsing-list-items-from-html-with-go\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/solved-parsing-list-items-from-html-with-go\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"[Solved] Parsing list items from html with Go\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/#website\",\"url\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/\",\"name\":\"JassWeb\",\"description\":\"Build High-quality Websites\",\"publisher\":{\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/#organization\",\"name\":\"Jass Web\",\"url\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/jassweb.com\\\/wp-content\\\/uploads\\\/2021\\\/02\\\/jass-website-logo-1.png\",\"contentUrl\":\"https:\\\/\\\/jassweb.com\\\/wp-content\\\/uploads\\\/2021\\\/02\\\/jass-website-logo-1.png\",\"width\":693,\"height\":132,\"caption\":\"Jass Web\"},\"image\":{\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/#\\\/schema\\\/person\\\/65c9c7b7958150c0dc8371fa35dd7c31\",\"name\":\"Kirat\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/wp-content\\\/litespeed\\\/avatar\\\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1777613206\",\"url\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/wp-content\\\/litespeed\\\/avatar\\\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1777613206\",\"contentUrl\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/wp-content\\\/litespeed\\\/avatar\\\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1777613206\",\"caption\":\"Kirat\"},\"sameAs\":[\"http:\\\/\\\/jassweb.com\"],\"url\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/author\\\/jaspritsinghghumangmail-com\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"[Solved] Parsing list items from html with Go - JassWeb","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/jassweb.com\/solved\/solved-parsing-list-items-from-html-with-go\/","og_locale":"en_US","og_type":"article","og_title":"[Solved] Parsing list items from html with Go - JassWeb","og_description":"[ad_1] You likely want to use the golang.org\/x\/net\/html package. It&#8217;s not in the Go standard packages, but instead in the Go Sub-repositories. (The sub-repositories are part of the Go Project but outside the main Go tree. They are developed under looser compatibility requirements than the Go core.) There is an example in that documentation that ... Read more","og_url":"https:\/\/jassweb.com\/solved\/solved-parsing-list-items-from-html-with-go\/","og_site_name":"JassWeb","article_published_time":"2022-09-30T10:59:10+00:00","author":"Kirat","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Kirat","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/jassweb.com\/solved\/solved-parsing-list-items-from-html-with-go\/#article","isPartOf":{"@id":"https:\/\/jassweb.com\/solved\/solved-parsing-list-items-from-html-with-go\/"},"author":{"name":"Kirat","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31"},"headline":"[Solved] Parsing list items from html with Go","datePublished":"2022-09-30T10:59:10+00:00","mainEntityOfPage":{"@id":"https:\/\/jassweb.com\/solved\/solved-parsing-list-items-from-html-with-go\/"},"wordCount":171,"publisher":{"@id":"https:\/\/jassweb.com\/solved\/#organization"},"keywords":["go"],"articleSection":["Solved"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/jassweb.com\/solved\/solved-parsing-list-items-from-html-with-go\/","url":"https:\/\/jassweb.com\/solved\/solved-parsing-list-items-from-html-with-go\/","name":"[Solved] Parsing list items from html with Go - JassWeb","isPartOf":{"@id":"https:\/\/jassweb.com\/solved\/#website"},"datePublished":"2022-09-30T10:59:10+00:00","breadcrumb":{"@id":"https:\/\/jassweb.com\/solved\/solved-parsing-list-items-from-html-with-go\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/jassweb.com\/solved\/solved-parsing-list-items-from-html-with-go\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/jassweb.com\/solved\/solved-parsing-list-items-from-html-with-go\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/jassweb.com\/solved\/"},{"@type":"ListItem","position":2,"name":"[Solved] Parsing list items from html with Go"}]},{"@type":"WebSite","@id":"https:\/\/jassweb.com\/solved\/#website","url":"https:\/\/jassweb.com\/solved\/","name":"JassWeb","description":"Build High-quality Websites","publisher":{"@id":"https:\/\/jassweb.com\/solved\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/jassweb.com\/solved\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/jassweb.com\/solved\/#organization","name":"Jass Web","url":"https:\/\/jassweb.com\/solved\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/","url":"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png","contentUrl":"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png","width":693,"height":132,"caption":"Jass Web"},"image":{"@id":"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31","name":"Kirat","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1777613206","url":"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1777613206","contentUrl":"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1777613206","caption":"Kirat"},"sameAs":["http:\/\/jassweb.com"],"url":"https:\/\/jassweb.com\/solved\/author\/jaspritsinghghumangmail-com\/"}]}},"_links":{"self":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts\/12403","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/comments?post=12403"}],"version-history":[{"count":0,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts\/12403\/revisions"}],"wp:attachment":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/media?parent=12403"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/categories?post=12403"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/tags?post=12403"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}