Python抓取每10分钟刷新网站:时间戳输入与数据关联问题求助
问题1:修改时间戳输入框获取特定时段数据
因为没法访问目标网站,给你通用的排查和实现步骤:
- 打开浏览器开发者工具(按F12),切换到「网络」标签页。
- 在网站的时间戳输入框里选一个特定时间,点击提交/查询按钮,观察网络请求:
- 如果是GET请求:看请求URL里的查询参数,会有类似
timestamp=xxxx、start_time=2024-05-20%2010:00:00这类字段,记录参数名和时间格式。 - 如果是POST请求:看请求的「表单数据」或「JSON」部分,同样找时间相关的参数。
- 如果是GET请求:看请求URL里的查询参数,会有类似
- 用
requests构造带参数的请求:
GET示例:
POST示例:target_time = "2024-05-20 10:00:00" # 换成网站要求的格式 params = {"timestamp": target_time} # 替换成实际参数名 response = requests.get(URL1, params=params) tables1 = pd.read_html(response.text)target_time = 1716189600 # 假设是Unix时间戳 data = {"start_timestamp": target_time} # 替换成实际参数名 response = requests.post(URL1, data=data) tables1 = pd.read_html(response.text) - 注意:有些网站会对时间参数做加密或校验,如果参数看起来是加密字符串,可能需要进一步分析前端JS代码,但先从简单的参数传递开始试。
问题2:关联自定义时间戳与抓取数据
你现在用的是datetime.now()作为当前数据的时间戳,但要关联特定查询时间,只需要把目标时间变量同时用于请求参数和DataFrame的时间列:
修改后的代码示例:
import requests import pandas as pd from datetime import datetime URL1 = "URL.com" # 定义你要查询的目标时间,格式要和网站要求一致 target_time_str = "2024-05-20 10:00:00" # 转换成datetime对象用于DataFrame target_time = datetime.strptime(target_time_str, "%Y-%m-%d %H:%M:%S") # 构造带时间参数的请求(这里用GET示例,根据实际情况换成POST) params = {"timestamp": target_time_str} response = requests.get(URL1, params=params) tables1 = pd.read_html(response.text) print("There are : ", len(tables1), " tables1") PartUsage = pd.DataFrame(tables1[8]) # 用目标时间而不是当前时间 PartUsage["Date"] = target_time PartUsage.set_index("Date", inplace=True) from pathlib import Path filepath = Path('Path.csv') filepath.parent.mkdir(parents=True, exist_ok=True) PartUsage.to_csv(filepath)
这样一来,你请求的是target_time_str对应时段的数据,同时把这个时间作为该条数据的时间戳存入CSV,就实现了关联。
内容的提问来源于stack exchange,提问作者rajat
相关产品推荐
相关产品推荐

