Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用Python从ASPX网站自动下载文件_Python_Asp.net_Download_Web - Fatal编程技术网

用Python从ASPX网站自动下载文件

用Python从ASPX网站自动下载文件,python,asp.net,download,web,Python,Asp.net,Download,Web,这是我第一次在stack overflow上发表文章,我期待着更多地参与社区。我需要从ASPX网站下载、重命名和保存许多Excel文件,但我无法通过URL直接访问这些Excel文件(即,URL不以“excelfilename.csv”结尾)。我所能做的就是转到一个URL,该URL启动文件的下载。下面是URL的一个示例 我想通过循环改变的输入是“ExcelFileName”和“SomeDate”。我知道当Excel文件可以通过URL直接访问时,可以使用urllib获取这些文件,但是我如何使用像这

这是我第一次在stack overflow上发表文章,我期待着更多地参与社区。我需要从ASPX网站下载、重命名和保存许多Excel文件,但我无法通过URL直接访问这些Excel文件(即,URL不以“excelfilename.csv”结尾)。我所能做的就是转到一个URL,该URL启动文件的下载。下面是URL的一个示例

我想通过循环改变的输入是“ExcelFileName”和“SomeDate”。我知道当Excel文件可以通过URL直接访问时,可以使用urllib获取这些文件,但是我如何使用像这样的URL呢


提前感谢您的帮助

使用
请求
库,您可以获取文件并迭代块以写入文件

import requests

report_names = ["Filename1","Filename2"]
dates = ['2016-02-22','2016-02-23']  # as strings
for report_name in report_names:
    for date in dates:
        with open('%s_%s_fetched.csv' % (report_name.split('.')[0],date,), 'wb') as handle:
            response = requests.get('https://www.websitename.com/something/ASPXthing.aspx?ReportName=%s&Date=%s&reportformat=csv' % (report_name,date,), stream=True)

            if not response.ok:
                # Something went wrong

            for block in response.iter_content(1024):
                handle.write(block)

这很好用。非常感谢。除此之外,我还需要添加一个密码和用户名,这很容易使用请求。我以前不知道有什么请求;太棒了。我将仔细阅读并试图更好地理解为什么我们使用1024作为块大小。这是我唯一不明白的部分。是的,这确实是一个了不起的图书馆;不需要坚持使用urllib。很高兴我能帮忙!我使用1024只是出于习惯,过去在做教程时使用它。该文件指出,“iter_内容”用于防止在内存中存储过大的对象。