code: def _find_header_row(self):
          
          th_max = 0
          header_idx = 0
          for idx, tr in enumerate(self._tr_nodes):
              th_count = len(tr.contents.filter_tags(matches=ftag('th')))
              if th_count > th_max:
                  th_max = th_count
                  header_idx = idx
  
          if not th_max:
              return
  
          self._log('found header at row %d (%d <th> elements)' % \
                      (header_idx, th_max))
  
          header_row = self._tr_nodes.pop(header_idx)
          return header_row.contents.filter_tags(matches=ftag('th'))
docs: Evaluate all rows and determine header position, based on
          greatest number of 'th' tagged elements