使用 python 捕获 API 自动下载文件

Capturing API automatic download file with python

我正在尝试在此使用 api url https://freeapi.robtex.com/pdns/reverse/(ip_address_here) 我是编码新手,所以如果我只是完全使用错误的包,请多多包涵... 当输入 URL 并在末尾附加 IP 地址时,它会自动将 json 响应下载为文件并且不显示任何网页。我想将这个下载的文件保存到一个临时目录,并保留它以便稍后在我的工具中进一步解析。我已尝试使用 request.get、urlopen 和 urllib,但我只得到响应代码 (200) 而不是实际文件。或者它似乎可以正常工作,但网站不会连接/响应我的脚本并且超时。我还在他们的网站上添加了复制的用户代理 headers。主要参数是使用 argparse,因此它可以用作命令行工具。函数 getData 是我试图下载文件的地方。

def getData(x):
    pdns_url="https://freeapi.robtex.com/pdns/reverse/"+x
    headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) 
       AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 
       Safari/537.36'}
    #req=urllib.request.Request(pdns_url)
    #resp=urllib.request.urlopen(pdns_url)
    resp= requests.get(pdns_url, headers=headers)
    respData=resp.read()
    return respData

def Main():
    parser = argparse.ArgumentParser()
    parser.add_argument("url", help="The IP to lookup.", type=str)
    parser.add_argument("-o", "--output", help="Output results to a file.", 
       action="store_true")
    args=parser.parse_args()

    result=getData(args.url)
    if args.output:
        f=open("Dns_Lookup", "a")
        f.write(str(result))
    else:
        print(str(args.url))

    if __name__=='__main__':
        Main()

尝试从基础开始:

import requests

r = requests.get('https://freeapi.robtex.com/pdns/reverse/')
print(r.content)
open('temp.txt', 'wb').write(r.content)

这无需添加 HTTP header。