code: func WebPageResolver(article *Article) string {
  	candidates, significantSurfaceCount := WebPageImageResolver(article.Doc)
  	if candidates == nil {
  		return ""
  	}
  	var bestCandidate candidate
  	var topImage string
  	if significantSurfaceCount > 0 {
  		bestCandidate = findBestCandidateFromSurface(candidates)
  	} else {
  		bestCandidate = findBestCandidateFromScore(candidates)
  	}
  
  	topImage = bestCandidate.url
  	a, err := url.Parse(topImage)
  	if err != nil {
  		return topImage
  	}
  	finalURL, err := url.Parse(article.FinalURL)
  	if err != nil {
  		return topImage
  	}
  	b := finalURL.ResolveReference(a)
  	topImage = b.String()
  
  	return topImage
  }
docs: // WebPageResolver fetches the main image from the HTML page