gpt4 book ai didi

python - 如何在 url 列表中快速找到不返回 302(重定向)状态代码的最后一个可用 url

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:47:35 26 4
gpt4 key购买 nike

现在我遇到这样的问题:

假设我有一个 url 列表,例如

['http://example.com/1', 
'http://example.com/2',
'http://example.com/3',
'http://example.com/4',
...,
'http://example.com/100']

其中一些是不可用的 url,请求这些 url 将导致 302 重定向状态代码。例如.../1 - .../50 是可用的 url,但是 .../51 会导致 302。那么 .../50 就是我想要的 url。

我想找出哪个 url 是最后一个可用的 url(不返回 302 代码),我相信二进制搜索可以完成这项工作,但我想知道如何更有效地实现它。我使用 python 的 urllib2 来检测 302 状态码。

附注例如.../1 - .../50 是可用的 url,但是 .../51 会导致 302。那么 .../50 就是我想要的 url。

最佳答案

此答案假设您的网址 当前以有意义的方式排序,并且所有不超过某个值 n 的网址都可用,并且所有网址在 n 将导致 302。

如果是这种情况,那么你可以适应this binary search answer满足您的需求:

import requests

def binary_search_urls(urls, lo=0, hi=None):
if hi is None:
hi = len(urls)
while lo < hi:
mid = (lo+hi)//2
status = requests.head(urls[mid]).status_code
if status != 302:
lo = mid+1
else:
hi = mid
return lo - 1

这将为您提供最后一个好 URL 的索引,如果没有好 URL,则为 -1

关于python - 如何在 url 列表中快速找到不返回 302(重定向)状态代码的最后一个可用 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13993386/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com