【发布时间】:2022-01-23 12:38:01
【问题描述】:
我必须使用 python 检查 url 是否存在。我正在尝试使用 requests.get(url) 但它会花费很多时间,因为一旦 get 被击中,文件就会开始下载。我不希望下载文件以检查 url 有效性。这可以用python实现吗?
【问题讨论】:
我必须使用 python 检查 url 是否存在。我正在尝试使用 requests.get(url) 但它会花费很多时间,因为一旦 get 被击中,文件就会开始下载。我不希望下载文件以检查 url 有效性。这可以用python实现吗?
【问题讨论】:
如下所示。有关详细信息,请参阅 HTTP head。
import requests
urls = ['https://www.google.com','https://www.google.com/you_can_not_find_me']
for idx,url in enumerate(urls,1):
r = requests.head(url)
if r.status_code == 200:
print(f'{idx}) {url} was found')
else:
print(f'{idx}) {url} was NOT found')
输出
1) https://www.google.com was found
2) https://www.google.com/you_can_not_find_me was NOT found
也许这对你有用?
import requests
r = requests.get('https://logos-download.com/wp-content/uploads/2016/10/Python_logo_wordmark.png')
if r.status_code == 200:
choice = input("File available!\nDownload? Y/N: ").capitalize().strip()
if choice == 'Y':
with open('aim.png','wb') as f:
f.write(r.content)
else:
print("Good bye!")
【讨论】:
stream=True 参数将是完美的,因此requests 在您明确要求之前不会下载响应正文。您可以在文档中找到更详细的说明:Body Content Workflow。此外,如果任务是将响应正文内容保存到文件中,则可以使用 shutil.copyfileobj() 和 Response.raw 来完成。