R中的简单download.file()无法与request.get一起使用

时间:2019-07-07 18:55:03

标签: python python-requests

我正在尝试将R代码转换为python代码。我目前遇到麻烦。 (代码片段1)。

我尝试了所有形式的请求,并且python代码正在创建一个没有内容的空白文件。

请求,wget,urllib.requests等,等等。

(1)

downloader = download.file(url = 'https://www.equibase.com/premium/eqbLateChangeXMLDownload.cfm',destfile = 'C:/Users/bnewell/Desktop/test.xml",quiet = TRUE)              # DOWNLOADING XML FILE FROM SITE
        unfiltered = xmlToList(xmlParse(download_file))         

(2)

import requests

URL = 'https://www.equibase.com/premium/eqbLateChangeXMLDownload.cfm'

response = requests.head(URL, allow_redirects=True)

3 个答案:

答案 0 :(得分:1)

import requests, shutil

URL = 'https://www.equibase.com/premium/eqbLateChangeXMLDownload.cfm'

page = requests.get(URL, stream=True, allow_redirects=True,
                    headers={'user-agent': 'MyPC'})

with open("File.xml", "wb") as f:
    page.raw.decode_content = True

    shutil.copyfileobj(page.raw, f)

由于不确定的原因,手动在文件下载中添加一个user-agent标头。

我使用shutil下载可以由page.iter_content替换的原始文件

答案 1 :(得分:0)

尝试实际get请求

import requests

URL = 'https://www.equibase.com/premium/eqbLateChangeXMLDownload.cfm'

response = requests.get(URL, headers={'allow_redirects':True})

然后,您可以使用response.rawresponse.textresponse.content等访问正在下载的内容。

有关更多详细信息,请参见实际的docs

答案 2 :(得分:0)

尝试这样的方法:

import os
import requests

url = "htts://......"
r = requests.get(url , stream=True, allow_redirects=True)

if r.status_code != 200:
    print("Download failed:", r.status_code, r.headers, r.text)

file_path = r"C:\data\...."
with open(file_path, 'wb') as f:
    for chunk in r.iter_content(chunk_size=1024 * 8):
        if chunk:
            f.write(chunk)
            f.flush()
            os.fsync(f.fileno())