2024-09-19 23:33:29 发布
网友
请容忍我,我是一个极端的新手,当谈到这种东西。我正在尝试创建一个从网站生成的excel电子表格的重复自动下载。我不知道怎么做,也不知道用什么方法
网站是:https://transparentdata.idaho.gov/data/#/29262
这上面有一个链接(右上角的“下载”),可以生成一个excel文件,其中包含所有州雇员及其工资率。我想让它自动下载这个电子表格每周一次,以便我可以比较数据随着时间的推移。有人能解释一下如何自动下载吗
先谢谢你
使用Firefox,我打开了web开发者工具>;我注意到,当您单击下载>;导出当前视图>;确认后,它会触发一个POST请求,该请求将返回一个作业id,您可以对其结果进行轮询:
使用cmdline中的cURL(POST用 data-raw隐式表示):
data-raw
$ curl 'https://transparentdata.idaho.gov/api/transactions/v2/export/df44b6b3-0697-4764-88b4-8de532ef5748' -H 'Content-Type: application/json' data-raw '{"report_id":29262,"query_params":{},"amount_column_state":{"total":141323290.18,"column_name":"Pay Rate ($)"}}' {"job_id":"7d3dc5b8-dbbb-44ba-8eac-7a3ed8f9d226"}
然后,您可以使用该id继续轮询GET请求,直到“状态”处于运行状态而不是“完成”:
$ curl 'https://transparentdata.idaho.gov/api/v2/async_jobs/7d3dc5b8-dbbb-44ba-8eac-7a3ed8f9d226' |jq { "id": "7d3dc5b8-dbbb-44ba-8eac-7a3ed8f9d226", "state": "running", "job_type": "GridDataApi::Dataset::Export::ExportUrl", "timestamps": { "created_at": "2021-02-26T11:44:58.852-08:00", "started_at": "2021-02-26T11:44:58.883-08:00" } }
然后有效载荷将变为:
$ curl 'https://transparentdata.idaho.gov/api/v2/async_jobs/7d3dc5b8-dbbb-44ba-8eac-7a3ed8f9d226' |jq { "id": "7d3dc5b8-dbbb-44ba-8eac-7a3ed8f9d226", "state": "finished", "job_type": "GridDataApi::Dataset::Export::ExportUrl", "timestamps": { "created_at": "2021-02-26T11:44:58.852-08:00", "started_at": "2021-02-26T11:44:58.883-08:00", "finished_at": "2021-02-26T11:45:08.255-08:00" }, "job_result": { "url": "https://s3.amazonaws.com/og-datamanager-uploads/production/grid_data_api/dataset_filtered_exports/d9d94de7-d9d4-4dde-927e-81d8facaeecd/csvs/original/dataset_filtered_export_scratch20210226-127461-7hofsf.csv?1614369247" } }
最后,您可以在“作业结果”中使用该url>;“url”下载您要查找的csv
使用^{}将其转换为Python应该相当容易,这里也有数以千计的指南和帖子
为了安排每周运行,您可以使用crontab或其他类似工具,具体取决于您的操作系统
这是python版本;需要requests(pip install requests):
requests
pip install requests
>>> import requests >>> import time >>> >>> export_url = 'https://transparentdata.idaho.gov/api/transactions/v2/export/df44b6b3-0697-4764-88b4-8de532ef5748' >>> export_json = {"report_id": 29262, "query_params": {}, "amount_column_state": {"total": 141323290.18, "column_name": "Pay Rate ($)"}} >>> polling_base_url = 'https://transparentdata.idaho.gov/api/v2/async_jobs/' >>> >>> def extract_url(): ... export_req = requests.post(export_url, json=export_json) ... polling_id = export_req.json()['job_id'] ... query_state = None ... while query_state != "finished": ... time.sleep(5) ... result_req = requests.get(polling_base_url + polling_id) ... query_state = result_req.json()['state'] ... return result_req.json()['job_result']['url'] ... >>> extract_url() 'https://s3.amazonaws.com/og-datamanager-uploads/production/grid_data_api/dataset_filtered_exports/479af43d-b28d-4fad-b885-41cf74998039/csvs/original/dataset_filtered_export_scratch20210301-7-1uex46m.csv?1614573842'
使用Firefox,我打开了web开发者工具>;我注意到,当您单击下载>;导出当前视图>;确认后,它会触发一个POST请求,该请求将返回一个作业id,您可以对其结果进行轮询:
使用cmdline中的cURL(POST用
data-raw
隐式表示):然后,您可以使用该id继续轮询GET请求,直到“状态”处于运行状态而不是“完成”:
然后有效载荷将变为:
最后,您可以在“作业结果”中使用该url>;“url”下载您要查找的csv
使用^{} 将其转换为Python应该相当容易,这里也有数以千计的指南和帖子
为了安排每周运行,您可以使用crontab或其他类似工具,具体取决于您的操作系统
这是python版本;需要
requests
(pip install requests
):相关问题 更多 >
编程相关推荐