def from_url(cls, db_url=ALL_SETS_ZIP_URL):
        """Load card data from a URL.

        Uses :func:`requests.get` to fetch card data. Also handles zipfiles.

        :param db_url: URL to fetch.
        :return: A new :class:`~mtgjson.CardDb` instance.
        """
        r = requests.get(db_url)
        r.raise_for_status()

        if r.headers['content-type'] == 'application/json':
            return cls(json.loads(r.text))

        if r.headers['content-type'] == 'application/zip':
            with zipfile.ZipFile(six.BytesIO(r.content), 'r') as zf:
                names = zf.namelist()
                assert len(names) == 1, 'One datafile in ZIP'
                return cls.from_file(io.TextIOWrapper(
                    zf.open(names[0]),
                    encoding='utf8'))