code: func (c *Crawler) Preprocess() (*goquery.Document, error) {
  	var err error
  
  	if c.RawHTML == "" {
  		if c.RawHTML, err = c.fetchHTML(c.url, c.config.timeout); err != nil {
  			return nil, err
  		}
  	}
  	if c.RawHTML == "" {
  		return nil, errors.New("cannot process empty HTML content")
  	}
  
  	c.RawHTML = c.addSpacesBetweenTags(c.RawHTML)
  
  	reader := strings.NewReader(c.RawHTML)
  	document, err := goquery.NewDocumentFromReader(reader)
  	if err != nil {
  		return nil, err
  	}
  
  	cs := c.GetCharset(document)
  	//log.Println("-------------------------------------------CHARSET:", cs)
  	if "" != cs && "UTF-8" != cs {
  		// the net/html parser and goquery require UTF-8 data
  		c.RawHTML = UTF8encode(c.RawHTML, cs)
  		reader = strings.NewReader(c.RawHTML)
  		if document, err = goquery.NewDocumentFromReader(reader); err != nil {
  			return nil, err
  		}
  	}
  
  	return document, nil
  }
docs: // Preprocess fetches the HTML page if needed, converts it to UTF-8 and applies
  // some text normalisation to guarantee better results when extracting the content