async def crawl(self, urls, sem):
        """
        :param urls:
        :type urls: list/dict
        :param sem:
        :type sem:
        :return:
        :rtype:
        """
        tasks = [
            self._sem_crawl(sem, x)
            for x in urls
        ]

        tasks_iter = asyncio.as_completed(tasks)

        fk_task_iter = tqdm.tqdm(
            tasks_iter,
            total=len(tasks),
            desc=' ✈',
            # desc='✈ {}/{}'.format(self.result['ok'], self.result['fail'])
        )
        for co_ in fk_task_iter:
            await co_
:param urls:
        :type urls: list/dict
        :param sem:
        :type sem:
        :return:
        :rtype: