docs: def get_option_value(elem):
      """ Get the value attribute, or if it doesn't exist the text
          content.
          <option value="foo">bar</option> => "foo"
          <option>bar</option> => "bar"
          :param elem: a soup element
      """
      value = elem.get("value")
      if value is None:
          value = elem.text.strip()
      if value is None or value == "":
          msg = u"Error parsing value from {}.".format(elem)
          raise ValueError(msg)
  
      return value