首页 > 解决方案 > 从持久 URL 获取 URL 重定向的有效方法

问题描述

我有一个数据集,其中一部分有一个 URL 字段,指示资源的位置。一些 URL 是持久的(例如句柄和 DOI),因此需要解析为它们的原始 URL。我主要使用 Python,到目前为止,似乎可行的解决方案涉及使用Requests HTTP library.

import requests
var_output_url = requests.get("http://hdl.handle.net/10179/619")
var_output_url.url

虽然这个解决方案有效,但它非常慢,因为我必须循环浏览大约 4,000 个文件,每个文件都有大约 2,000 个 URL。有没有更有效的方法来解决 URL 重定向?

我在一批上测试了我当前的解决方案,花了将近 5 分钟;按照这个速度,我需要几天(13 天)来处理所有批次 [...] 我知道,不一定会那么长,我可以并行运行它们

标签: python-3.xpython-requestsurl-redirection

解决方案


使用HEAD而不是GET应该只给你标题而不是资源主体,在你的例子中是 html 页面。如果您只需要解析 url 重定向,那么通过网络传输数据的时间将大大减少。使用参数allow_redirects=True允许重定向。

var_output_url = requests.head("http://hdl.handle.net/10179/619", allow_redirects=True)
var_output_url.url
>>> 'https://mro.massey.ac.nz/handle/10179/619'

推荐阅读