python-3.x - 从持久 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 天)来处理所有批次 [...] 我知道,不一定会那么长,我可以并行运行它们
解决方案
使用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'
推荐阅读
- apache-spark - Spark DataFrame(或DataSet)中两列的链接值
- vue.js - Vee Validate 阻止我的组件运行,errors.first 故障
- javascript - 如何从反应组件更改快速 API url
- r - 如何在 ggplot2 中使用线图和误差线绘制多个连续变量与因子的关系?
- r - 我无法使用 rbind 和 do.call 访问列表列表中的第三个列表
- php - 如何指定 wordpress 在默认位置以外的特定位置查找 wp-content 目录?
- c# - 为所有出现的 Rule().NotEmpty() 设置默认错误代码;
- c# - Ef Core,不同数据类型的多对多连接表复合键
- javascript - 对显示“不允许加载本地资源”错误的字符串使用 IndexOf() 方法
- javascript - 用js搜索字母的字符串