request.get()所做的事情与将URL粘贴到浏览器中时有所不同

时间:2019-07-15 05:38:55

标签: python-3.x

在Python 3.7上-我正在尝试从本地服务器下载文件。当我将URL粘贴到浏览器中时,它会很好地下载文件。但是,当我尝试以下操作时:

import requests
url = 'url_for_local_download'
r = requests.get(url, allow_redirects=True)
open('test.csv', 'wb').write(r.content)

运行代码并创建test.csv,但是它充满了无意义的符号,而不是整齐的表,其中的列中包含数值。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

这些无意义的符号是什么样的?您的代码要做的是对文件内容进行一对一的复制并将其写入该csv文件。因此,其中将包含<html><body>之类的标签。

如果您想要

  

整齐的表格,列中包含数值

您将必须对服务器响应进行一些解析和/或分析表数据的来源。就我们所知,它可能来自API端点。在这种情况下,您可以随意处理和下载该local_url,但其中不会有一个包含整洁数字的表。好消息是,从API端点进行解析通常非常简单。

看看:https://programminghistorian.org/en/lessons/intro-to-beautiful-soup这节课。它说明了解析真的很好。

答案 1 :(得分:0)

您可以尝试通过https://docs.python.org/3/library/http.client.html#http.client.HTTPResponse.read读取http.client.HTTPMessage对象

使用此功能,您可以获取有关.csv文件的消息。