从 Python 中的动态网页下载 CSV 文件
Downloading a CSV file from a dynamic webpage in Python
CSV 文件会定期上传到已知常量 URL (url_variable)。我想在 Python 脚本的过程中自动下载该 CSV 文件的最新版本。
我尝试使用 Pandas,特别是 pd.read_csv(url_variable),但我收到“HTTP 错误 403:禁止访问”。
接下来我尝试使用 urllib 并传入欺骗性的 headers (headers_variable),特别是 urllib.requests.Request(url_variable, headers=headers_variable).这种技术有效。但是,当新的 CSV 文件上传到 URL 并重复脚本时,会返回旧的 CSV 文件。
每次调用此块时,如何更改我的代码以下载新的 CSV 文件?
检查 url 是否与新的 CSV 上传相同。如果一样的话直接下载就可以了
下面是一个在内存中下载CSV文件并使用requests直接读取的例子pandas:
from io import StringIO
import pandas as pd
import requests
if __name__ == "__main__":
url = 'https://raw.githubusercontent.com/nytimes/covid-19-data/master/us-states.csv'
headers = {"Authorization": "Test"}
response = requests.get(url, headers=headers)
df = pd.read_csv(StringIO(response.text))
print(df.shape)
当然,headers随心所欲。
如果文件很大,您可以使用临时文件来处理它,请参阅:Generate temporary files and directories
CSV 文件会定期上传到已知常量 URL (url_variable)。我想在 Python 脚本的过程中自动下载该 CSV 文件的最新版本。
我尝试使用 Pandas,特别是 pd.read_csv(url_variable),但我收到“HTTP 错误 403:禁止访问”。
接下来我尝试使用 urllib 并传入欺骗性的 headers (headers_variable),特别是 urllib.requests.Request(url_variable, headers=headers_variable).这种技术有效。但是,当新的 CSV 文件上传到 URL 并重复脚本时,会返回旧的 CSV 文件。
每次调用此块时,如何更改我的代码以下载新的 CSV 文件?
检查 url 是否与新的 CSV 上传相同。如果一样的话直接下载就可以了
下面是一个在内存中下载CSV文件并使用requests直接读取的例子pandas:
from io import StringIO
import pandas as pd
import requests
if __name__ == "__main__":
url = 'https://raw.githubusercontent.com/nytimes/covid-19-data/master/us-states.csv'
headers = {"Authorization": "Test"}
response = requests.get(url, headers=headers)
df = pd.read_csv(StringIO(response.text))
print(df.shape)
当然,headers随心所欲。 如果文件很大,您可以使用临时文件来处理它,请参阅:Generate temporary files and directories