如何通过 python 以编程方式提取 Azure IP 范围 json 文件?

How can I extract Azure IP ranges json file programatically through python?

我想从https://www.microsoft.com/en-us/download/confirmation.aspx?id=56519下载ipranges.json(每周更新) 我有这个 python 代码可以永远保持 运行。

import wget
URL = "https://www.microsoft.com/en-us/download/confirmation.aspx?id=56519"
response = wget.download(URL, "ips.json")
print(response)

如何在 Python 中下载 JSON 文件?

因为https://www.microsoft.com/en-us/download/confirmation.aspx?id=56519是自动触发javascript下载的link,所以你只下载页面,而不是文件

如果您检查下载的文件,源将如下所示

我们意识到文件会在一段时间后发生变化,所以我们必须以通用方式抓取它

为了方便,我不会使用wget,这里的2个库是requests请求页面和下载文件,beaufitulsoup解析html

# pip install requests
# pip install bs4
import requests
from bs4 import BeautifulSoup

# request page
URL = "https://www.microsoft.com/en-us/download/confirmation.aspx?id=56519"
page = requests.get(URL)

# parse HTML to get the real link
soup = BeautifulSoup(page.content, "html.parser")
link = soup.find('a', {'data-bi-containername':'download retry'})['href']

# download
file_download = requests.get(link)

# save in azure_ips.json
open("azure_ips.json", "wb").write(file_download.content)