问题描述
我正在从网站上抓取数据。我从浏览器的inspect元素的Network面板下载data.json文件。然后在本地读取JSON文件以存储结果。我的问题是我想让此脚本每隔几个小时自动获取一次data.json文件并记录信息。
解决方法
不要试图从Chrome中获取任何东西-不必要。
那里的SPA调用元数据URL以获取当前的“目录”(日期时间),然后使用该目录查找最新的interval_generation_data。
这将每分钟为您获取数据。注意这里没有错误处理,因此循环将在您第一次获得403或类似值时结束。
import requests
import json
import time
s = requests.Session()
s.headers = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML,like Gecko) Chrome/84.0.4147.125 Safari/537.36','referer': 'https://outagemap.coned.com/external/default.html','x-requested-with': 'XMLHttpRequest'
}
metadata_url = 'https://outagemap.coned.com/resources/data/external/interval_generation_data/metadata.json'
json_url = "https://outagemap.coned.com/resources/data/external/interval_generation_data/"
while True:
r = s.get(metadata_url,params={'_': int(time.time())})
directory = r.json()['directory']
r = s.get(json_url + f'{directory}/data.json',params={'_': int(time.time())})
print(r.json())
time.sleep(60)
,
pm2 start npm --name "app name" -- start