I wonder if there's an easy way to make the Python lxml package use a modern Python HTTP/HTTPS client, like urllib or requests, when loading external entities and DTDs. If I just pass no_network=False to XMLParser, that seems to use a client built into libxml2, which doesn't support HTTPS.
Or maybe I need to figure out how to put the DTDs I'm working with into a catalog.