无法使用请求模块下载.gz文件

时间:2017-12-07 08:09:55

标签: python python-requests

如何正确下载import requests response = requests.get('https://www.propertyshark.com/sitemap/CA-San-Bernardino-reports_1.xml.gz', headers=headers) print(response.status_code) if response.status_code == 200: print('Downloading...') file_name = 'file.xml.gz' 文件?我的代码如下:

1KB

它会下载gz文件,但它已损坏 - 只有.gz.cpgz大小,当我尝试解压缩时,会在文件名中添加 if (playerPosition.x > 0)

2 个答案:

答案 0 :(得分:2)

您使用的网址并未向您提取正确的.gz文件,因为它实际上是一个HTML网页,可以使用JavaScript下载.gz文件。由于它创建了一个空白页面,它看起来像是在那里托管的原始文件,但实际上并不喜欢它。

我通过打开页面并检查其元素来验证这一点。如果站点使用一些中间件在前端生成.gz文件,则可能很容易发生这种情况。

如果您可以联系该网站的开发人员,则可以为您打开自定义路径。否则,您可能需要考虑使用selenium打开URL,然后自动下载。

它现在被保存为代码中的.gz文件,只是因为您明确提供了该名称 - file_name = 'file.xml.gz'。 FWIW,在linux上,您可以轻松地将一个扩展名的文件重命名为另一个扩展名。

答案 1 :(得分:1)

我尝试运行您的代码并获得以下错误页面。您似乎需要操纵无头浏览器,例如通过硒的无头镀铬。请求模块适用于此错误页面上提到的Bot条件。

import requests

res = requests.get("https://www.propertyshark.com/sitemap/CA-San-Bernardino-reports_1.xml.gz")
print(res.text)

enter image description here