YoD*_*oDa 1 python web-scraping data-science
我是一个初学者,我正在开发一个代码来可视化冠状病毒在全球的传播,我想从GitHub 存储库(csse_covid_19_data)中提取 .csv 文件,其中每 2 天上传一个新的 .csv 文件。是否可以将最新的 csv 文件自动导入笔记本,而不是手动下载文件?
我试过抓取数据,但没有帮助
import requests
url = 'https://github.com/CSSEGISandData/COVID-19/blob/master/csse_covid_19_data/csse_covid_19_daily_reports/03-08-2020.csv'
response = requests.get(url)
print(response.text)
Run Code Online (Sandbox Code Playgroud)
此解决方案特定于您的用例:
使用以下命令安装PyGithub包pip:
!pip install PyGithub
Run Code Online (Sandbox Code Playgroud)
从此页面生成 Github API 令牌Generate new token,方法是在以下代码中单击该令牌并将该令牌作为字符串传递,token以建立与 Github 的连接:
from github.MainClass import Github
g = Github(token)
Run Code Online (Sandbox Code Playgroud)
现在您已使用您的凭据连接到 Github,您可以访问您的所有存储库内容以及其他公共存储库。
加载CSV存储文件的存储库:
repo = g.get_repo("CSSEGISandData/COVID-19")
Run Code Online (Sandbox Code Playgroud)
获取存储在文件存储目录中的CSV文件的对象列表:
file_list = repo.get_contents("csse_covid_19_data/csse_covid_19_daily_reports")
Run Code Online (Sandbox Code Playgroud)
由于存储这些CSV文件的目录也包含一个.gitignore文件,一个README.md文件和文件命名的格式为“mm-dd-yyyy”,所以README.md出现在最后,最后一秒的文件是你最新更新的文件。要访问它,请运行以下代码:
github_dir_path = 'https://github.com/CSSEGISandData/COVID-19/raw/master/csse_covid_19_data/csse_covid_19_daily_reports/'
file_path = github_dir_path + str(file_list[-2]).split('/')[-1].split(".")[0]+ '.csv'
Run Code Online (Sandbox Code Playgroud)
使用read_csv()pandas的方法从指定路径加载数据。
import pandas as pd
df = pd.read_csv(file_path, error_bad_lines=False)
Run Code Online (Sandbox Code Playgroud)
如果您想手动指定路径,请尝试以下代码:
通过右键单击raw如下所示从 Github 获取 CSV 文件的路径并将其值分配给file_path:
file_path = 'https://github.com/CSSEGISandData/COVID-19/raw/master/csse_covid_19_data/csse_covid_19_daily_reports/03-08-2020.csv'
Run Code Online (Sandbox Code Playgroud)
使用read_csv()pandas的方法从指定路径加载数据:
import pandas as pd
df = pd.read_csv(file_path, error_bad_lines=False)
Run Code Online (Sandbox Code Playgroud)
如果要自动指定路径,请尝试以下代码:
设置您想要刷新代码的时间并将下面给出的解决方案与之集成。
由于您知道存储最新文件的目录以及将新文件添加到该目录的频率,您只需以 mm-dd-yyyy 格式动态更改当前日期的日期:
from datetime import date
file_date = str(date.today().strftime('%m-%d-%Y'))
file_date
Run Code Online (Sandbox Code Playgroud)
输出: 03-11-2020
同样,如果要为昨天的日期运行代码,只需更改 file_date 的值:
from datetime import date, timedelta
file_date = str((date.today() - timedelta(days = 1)).strftime('%m-%d-%Y'))
file_date
Run Code Online (Sandbox Code Playgroud)
输出: 03-10-2020
由于当前在该目录中,最后上传的文件是 2020 年 3 月 9 日,因此我们将使用该日期:
from datetime import date, timedelta
file_date = str((date.today() - timedelta(days = 2)).strftime('%m-%d-%Y'))
file_date
Run Code Online (Sandbox Code Playgroud)
输出: 03-09-2020
动态生成 file_path:
github_dir_path = 'https://github.com/CSSEGISandData/COVID-19/raw/master/csse_covid_19_data/csse_covid_19_daily_reports/'
file_path = github_dir_path + file_date + '.csv'
Run Code Online (Sandbox Code Playgroud)
使用read_csv()pandas的方法从指定路径加载数据。
import pandas as pd
df = pd.read_csv(file_path, error_bad_lines=False)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2877 次 |
| 最近记录: |