【发布时间】:2020-06-10 16:15:35
【问题描述】:
我目前正在尝试在我的程序中实现一项功能,该功能将检测并取消缩短任何 URL 缩短器,包括 bit.ly 和旧的 goo.gl 链接(现在不再存在)。我找到了几篇文章,我将讨论我目前的实验、发现并提出“有没有办法做到这一点?”的问题
我首先阅读了以前找到的任何文章。我发现了一个 Stack Overflow question 关于如何使用 Python 取消缩短 URL 的内容。答案指向requests 库,使用requests.head,将allow_redirects 设置为True。 requests 根本不适用于 async.io。这是我发现一个基于 Async requests with Python requests 的问题的地方(找到here)
这个问题指向grequests,这是一个异步版本的请求,但是,当我尝试第一个问题中的代码时,将requests替换为grequests,它没有显示重新后的链接位置指示。然后我将.head 更改为.get,虽然它确实有效,但它仍然提供了我使用的bit.ly URL,而不是未缩短的URL。
我不确定在不使其同步而不是异步的情况下,我可以在取消缩短后使用什么来查找 URL 位置。如果有人可以提供帮助,那将非常有用!
【问题讨论】:
-
你运行的是哪个 Python 版本?
-
当前运行 3.7 @Tomalak
-
如果您的目标是“不阻塞主线程”(相对于“必须使用异步完成”),您可以使用使用
requests库进行多线程。 -
由于我的其他导入,我需要使用 asyncio 来完成。它不能用多线程(或多处理)来完成
标签: python asynchronous python-requests discord.py grequests