Golang : How to validate ISBN?
This tutorial will show you an example on how to validate ISBN with the govalidator package and then get the book information from http://www.isbnsearch.org/
. The HTML data dump will not be parsed, but you can extract the relevant information you want easily. See this tutorial on how to extract links from web page to get the idea on how to extract the book title and prices.
NOTE : There are two versions of ISBN(International Standard Book Number) standard. The ISBN is 13 digits long if assigned on or after 1 January 2007, and 10 digits long if assigned before 2007.
Here you go!
package main
import (
"fmt"
"github.com/asaskevich/govalidator"
"io/ioutil"
"net/http"
"os"
"strings"
)
func main() {
isbn := "0-201-53377-4" // before 2007 - 10 digits
// see https://en.wikipedia.org/wiki/International_Standard_Book_Number
validISBN := govalidator.IsISBN(isbn, 10) //use version 10
// can use govalidator.IsISBN10 or IsISBN13 as well.
fmt.Printf("%s is a valid ISBN : %v \n", isbn, validISBN)
if validISBN {
// remove all dashes
noDashISBN := strings.Replace(isbn, "-", "", -1)
resp, err := http.Get("http://www.isbnsearch.org/isbn/" + noDashISBN)
if err != nil {
fmt.Println(err)
os.Exit(1)
}
defer resp.Body.Close()
htmlData, err := ioutil.ReadAll(resp.Body)
if err != nil {
fmt.Println(err)
os.Exit(1)
}
fmt.Println(os.Stdout, string(htmlData))
// see https://www.socketloop.com/tutorials/golang-how-to-extract-links-from-web-page
// on how to scrape the information you want from HTML
}
}
Happy coding!
References :
https://en.wikipedia.org/wiki/InternationalStandardBook_Number
See also : Golang : How to extract links from web page ?
By Adam Ng
IF you gain some knowledge or the information here solved your programming problem. Please consider donating to the less fortunate or some charities that you like. Apart from donation, planting trees, volunteering or reducing your carbon footprint will be great too.
Advertisement
Tutorials
+15.6k Golang : Get all local users and print out their home directory, description and group id
+14.6k Golang : Find network of an IP address
+7.4k CloudFlare : Another way to get visitor's real IP address
+8.1k Golang : Ways to recover memory during run time.
+8.4k Golang : Check from web if Go application is running or not
+17.6k Golang : Multi threading or run two processes or more example
+15.8k Chrome : ERR_INSECURE_RESPONSE and allow Chrome browser to load insecure content
+9.7k Golang : Extract or copy items from map based on value
+9.5k Golang : Create unique title slugs example
+5.3k Linux/Unix/MacOSX : Find out which application is listening to port 80 or use which IP version
+8.6k PHP : How to parse ElasticSearch JSON ?