统一资源定位器(或更常见的 URL)是互联网上内容的地址。URL 通常是网页的地址,后面跟着一长串看似随机的字符。这些字符既难看又难记。幸运的是,有一种叫做 短链生成器的工具可以最大限度地减少这些字符。
短链有几个好处,包括使地址更容易分享,减少用户输入错误的可能性。即使 URL 中少了一个字符,也会使其完全无用,将用户导向错误的页面或根本不存在的资源。
以 https://example.com/blog-url-shorteners/48bfefiahl9adik
缩写为 https://example.com/url-shorteners
为例。不难看出,用户更容易分享哪个网址,或者哪个网址更容易导致输入错误。
短链生成器的好处不仅仅在于整理长 URL。它们还能在以下方面提供帮助:
- 提高在搜索引擎中的排名:内容创作者、企业和初创公司的网站、博客或社交媒体上都有内容。搜索引擎更喜欢带有特定关键词的链接,这样它们就能获得相应的排名并产生良好的结果。从已知平台生成的简短 URL 可以帮助您的 URL 获得更高的排名。
- 跟踪链接流量:Bitly 等付费短链生成服务可帮助您跟踪点击链接的用户,这样您就可以分析输入流量并相应地定制内容。
短链生成器的两种方法:Python 库和 API
按照本教程的说明,您将使用两种不同的方法用 Python 构建一个短链生成器 Web 应用程序:
- pyshorteners 库
- Bitly API
pyshorteners 模块用于开发人员生成短网址,而 Bitly API 模块则生成短网址并提供更强大的功能,如每个网址的点击次数、点击网址的位置、网址的自定义等。
要完成本教程,您需要具备基本的 Python 知识,并且系统中必须安装 Python。
设置项目环境
在创建短链生成器 Web 应用程序之前,您需要为项目设置环境,包括安装 Flask,这是一个轻量级框架,能让 Python 网络应用程序的开发变得更简单。
从以下步骤开始:
- 创建一个项目文件夹,名称可以是 url-shortener。
- 在该文件夹中创建一个名为 main.py 的空文件。
- 为该项目创建一个虚拟环境,这样任何 Python 库的安装都与系统无关。在终端中使用
python -m venv myenv
命令来创建该环境。(在这种情况下,环境文件将放在 myenv 目录中)。 - 使用操作系统的相应命令激活虚拟环境(其中 是上一步创建的目录名称)。
- Windows:
- Linux/macOS:
- Windows:
- 使用
pip install flask
命令安装 Flask。 - 在项目文件夹中创建名为 templates 的文件夹。(Flask 将从该目录中获取 HTML 模板)。
到目前为止,您在终端中完成的工作将如下所示:
macOS 终端中的 Python 项目
使用 pyshorteners 库创建短链生成 Web 应用程序
项目环境设置完成后,现在就使用 pyshorteners 库创建第一个 URL 短缩器。
使用以下命令安装 pyshorteners 库:
pip install pyshorteners
为 Web 应用程序创建基本用户界面
接下来,你将用 HTML 创建一个带有标签和输入框的基本表单,在其中输入一个长 URL 并生成一个短 URL。
在 templates 文件夹中创建 form.html 文件,然后在该文件中输入以下代码并保存:
<!DOCTYPE html> <html lang="en"> <head> <title>URL Shortener</title> </head> <body> <h1>URL Shortener</h1> <form method="post" action="/"> <label for="url">Enter an https:// URL:</label> <input type="url" name="url" id="url" placeholder="https://www.xyz.com" pattern="https://.*" size="50" value="{{old_url}}" required > <button type="submit" value="submit">Submit</button> <br> <label>Generated URL: </label> <input name="generated_url" value="{{new_url}}" style="margin-top: 10px; margin-left:35px" size="50"></input> </form> </body> </html>
上述代码创建了一个包含两个标签、两个输入框和一个按钮的表单。
第一个输入框名为 url
,用于写入长 URL,另一个输入框用于生成短 URL。
url
输入字段具有以下属性:
name
:用于标识元素(如 URL)placeholder
:显示 URL 示例pattern
:指定 URL 的规则,即 https://.*https://.*
required
:在提交前输入 URLvalue
:查看旧 URL
第二个输入字段的 value
属性设置为 new_url
。new_url
是由 main.py 文件中的 pyshorteners 库生成的短 URL(如下一节所示)。
输入表单如下截图所示:
用于短链生成器的网络表单
使用 pyshorteners 缩短 URL 代码
现在您已经创建了表单,可以使用 Python 和 pyshorteners 为其添加一些功能。
您将添加代码,将长 URL 处理为短 URL 并运行网络应用程序。导航到之前创建的 main.py 文件,输入以下代码并保存:
from flask import Flask, render_template, request import pyshorteners app = Flask(__name__) @app.route("/", methods=['POST', 'GET']) def home(): if request.method=="POST": url_received = request.form["url"] short_url = pyshorteners.Shortener().tinyurl.short(url_received) return render_template("form.html", new_url=short_url, old_url=url_received) else: return render_template('form.html') if __name__ == "__main__": app.run()
上面的代码从 Flask 框架导入了 pyshorteners 库和以下模块,所有这些都是缩短 URL 所需的:
Flask
: Flask 框架本身,之前已经介绍过。render_template
: 模板渲染包,用于从templates
文件夹中生成 HTML 文件输出。request
: Flask 框架中的一个对象,包含用户作为 HTTP 请求的一部分从前台发送到后台的所有数据。
接下来,它会创建一个名为 home()
的函数,该函数接收表单中提交的 URL 并输出一个简短的 URL。app.route()
装饰器用于将函数绑定到运行应用程序的特定 URL 路由,而 POST/GET 方法则用于处理请求。
在 home()
函数中,有一个 if-else
条件语句。
在 if
语句中,如果 request.method=="POST"
,名为 url_received
的变量将被设置为 request.form["url"]
,即在表单中提交的 URL。这里,url
是之前创建的 HTML 表单中定义的输入字段的名称。
然后,将名为 short_url
的变量设置为 pyshorteners.Shortener().tinyurl.short(url_received)
。这里使用了 pyshorteners 库中的两个方法: .Shortener()
和 .short()
。 .Shortener()
函数创建一个 pyshorteners 类实例, .short()
函数将 URL 作为参数并将其缩短。
short()
函数 tinyurl.short()
是 pyshorteners 库的众多 API 之一, osdb.short()
是另一个 API,也可用于相同目的。
render_template()
函数用于渲染 HTML 文件模板 form.html,并通过参数将 URL 发送回表单。new_url
参数设置为,old_url
设置为 url_received
。if
语句的作用域到此为止。
对于 else
语句,如果请求方法不是 POST,则只渲染 form.html HTML 模板。
使用 pyshorteners 库构建的短链生成器 Web 应用程序演示
要演示 pyshorteners 短链生成器应用程序,请在运行应用程序后导航到应用程序的默认路径 http://127.0.0.1:5000/。
在网页表单的第一个字段中粘贴一个链接:
使用 pyshorteners 库测试短链生成器
单击 Submit 按钮,在生成的 URL 字段中输出以 tinyurl
为域的短 URL:
使用 pyshorteners 库生成短链的结果
使用 Bitly API 模块创建短链生成器 Web 应用程序
在本节中,您将使用 Bitly API 开发一个短链生成器应用。如前所述,Bitly API 模块是生成短链的另一种方法,它还能提供有关点击、位置和所用设备类型(如台式机或移动设备)的详细分析。
使用以下命令安装 Bitly API:
pip install bitly-api-py3
使用 Bitly API 需要访问令牌,您可以通过注册 Bitly 获得。
完成注册过程后,登录 Bitly 查看您的仪表盘:
单击左侧边栏的 “Settings“,然后单击 “Developer settings” 下的 “API” 部分。
如下图所示,在 “Generate token” 按钮上方的字段中输入密码,生成访问令牌,并将令牌保留在应用程序的代码中:
为 Bitly API 生成访问令牌
使用 Bitly API 生成短链的代码
现在您已经从 Bitly 获得了令牌,可以编写网络应用程序代码,使用 Bitly API 缩短 URL。
您将使用为 pyshorteners 部分创建的相同表单,但要对 main.py 文件做一些改动:
from flask import Flask, render_template, request import bitly_api app = Flask(__name__) bitly_access_token = "37b1xxxxxxxxxxxxxxxxxxxxxxxxxx" @app.route("/", methods=['POST', 'GET']) def home(): if request.method=="POST": url_received = request.form["url"] bitly = bitly_api.Connection(access_token=bitly_access_token) short_url = bitly.shorten(url_received) return render_template("form.html", new_url=short_url.get('url'), old_url=url_received) else: return render_template('form.html') if __name__ == "__main__": app.run()
从上面的代码中可以看到,使用 import bitly_api
导入了 bitly_api
。然后,访问令牌会保存在一个名为 bity_access_token
的变量中,如 bitly_access_token = "37b1xxxxxxxxxxxxxxxxxxxxxxxx"
。
home()
函数缩短了 URL 的长度,并包含一个 if-else
条件语句。
在 if
语句中,如果方法或请求是 POST
,那么表单中提交的 URL 将被设置为 url_received
变量。
bitly_api.Connection(access_token=bitly_access_token)
函数连接到 Bitly API,并将你之前保存的访问令牌作为参数传递给它。
要缩短 URL,需要使用 bitly.shorten()
函数,将 url_received
变量作为参数传递,并将其保存到名为 short_url 的变量中。
最后,创建的表单将被渲染,并使用 render_template()
函数将 URL 发送回表单中。if
语句至此完成。
对于 else
语句,则使用 render_template()
函数渲染表单。
使用 Bitly API 构建的短链生成器 Web 应用程序演示
要演示 Bitly API URL Shortener 应用程序,请在运行应用程序后导航到应用程序的默认路径 http://127.0.0.1:5000/。
将您选择的链接粘贴到网页表单的第一个字段:
使用 Bitly API 测试短链生成器
单击 Submit,在网络应用程序的第二个字段中生成以 bit.ly
为域的短链:
使用 Bitly API 生成短链的结果
在 Python 应用程序中使用 Bitly API 生成短链就这么简单。
小结
短链生成器可以缩短 URL,使其易于共享、看起来更整洁、占用空间更少。在本文中,您了解了短链生成器及其优点,以及如何使用 pyshorteners 和 Bitly API 用 Python 创建短链生成器 Web 应用程序。pyshorteners 库提供短网址,而 Bitly API 则提供详细的分析和短网址。
原文地址:https://www.wbolt.com/url-shortener-with-python.html