code: def evaluate_scpd_xml(url):
      
      # Get SCPD XML via HTTP GET
      try:
          res = requests.get(url, timeout=2)
      except requests.exceptions.RequestException as err:
          _LOGGER.error(
              "When trying to request %s the following error occurred: %s",
              url, err)
          raise ConnectionError
  
      if res.status_code == 200:
          try:
              root = ET.fromstring(res.text)
              # Look for manufacturer "Denon" in response.
              # Using "try" in case tags are not available in XML
              _LOGGER.debug("Device %s has manufacturer %s", url,
                            root.find(SCPD_DEVICE).find(SCPD_MANUFACTURER).text)
              if (root.find(SCPD_DEVICE).find(
                      SCPD_MANUFACTURER).text in SUPPORTED_MANUFACTURERS and
                      root.find(SCPD_DEVICE).find(
                          SCPD_DEVICETYPE).text == DEVICETYPE_DENON):
                  device = {}
                  device["host"] = urlparse(
                      root.find(SCPD_DEVICE).find(
                          SCPD_PRESENTATIONURL).text).hostname
                  device["presentationURL"] = (
                      root.find(SCPD_DEVICE).find(SCPD_PRESENTATIONURL).text)
                  device["modelName"] = (
                      root.find(SCPD_DEVICE).find(SCPD_MODELNAME).text)
                  device["friendlyName"] = (
                      root.find(SCPD_DEVICE).find(SCPD_FRIENDLYNAME).text)
                  return device
              else:
                  return False
          except (AttributeError, ValueError, ET.ParseError) as err:
              _LOGGER.error(
                  "Error occurred during evaluation of SCPD XML: %s", err)
              return False
      else:
          _LOGGER.error("Host returned HTTP status %s when connecting to %s",
                        res.status_code, url)
          raise ConnectionError
docs: Get and evaluate SCPD XML to identified URLs.
  
      Returns dictionary with keys "host", "modelName", "friendlyName" and
      "presentationURL" if a Denon AVR device was found and "False" if not.