从 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