) -> List[Document]:
        """Recursively get all child links starting with the path of the input URL.
        Args:
            url: The URL to crawl.
            visited: A set of visited URLs.
            depth: To reach the current url, how many pages have been visited.
        """
        try:
            import aiohttp
        except ImportError:
            print("The aiohttp package is required for the RecursiveUrlLoader.")
            print("Please install it with `pip install aiohttp`.")
        if depth > self.max_depth:
            return []
        # Add a trailing slash if not present
        if not url.endswith("/"):
            url += "/"
        # Exclude the root and parent from a list
        visited = set() if visited is None else visited
        # Exclude the links that start with any of the excluded directories
        if self.exclude_dirs and any(
            url.startswith(exclude_dir) for exclude_dir in self.exclude_dirs
        ):
            return []
        # Disable SSL verification because websites may have invalid SSL certificates,
        # but won't cause any security issues for us.
        async with aiohttp.ClientSession(
            connector=aiohttp.TCPConnector(ssl=False),
            timeout=aiohttp.ClientTimeout(self.timeout),
        ) as session:
            # Some url may be invalid, so catch the exception
            response: aiohttp.ClientResponse
            try:
                response = await session.get(url)
                text = await response.text()
            except aiohttp.client_exceptions.InvalidURL:
                return []
            # There may be some other exceptions, so catch them,
            # we don't want to stop the whole process
            except Exception:
                return []
            absolute_paths = self._get_sub_links(text, url)