用以上程序爬取数据,但因为23年天气预报数据尚未全部公布,如何将未公布的数据,设为空值存储
时间: 2024-02-11 15:07:16 浏览: 79
某勾和某无忧网站职位爬取数据(数据清洗之后)
你可以在 `craw_table` 函数中添加一个判断,如果获取的 JSON 数据中没有天气数据,则创建一个空的 DataFrame,不过需要指定空的 DataFrame 的列名和行数。可以修改如下:
```python
def craw_table(year, month):
# 提供年份和月份爬取对应的表格数据
params = {
"areaInfo[areaId]": 71865,
"areaInfo[areaType]": 2,
"date[year]": year,
"date[month]": month
}
resq = requests.get(url, headers=headers, params=params)
data = resq.json()["data"]
df_list = pd.read_html(data)
# Check if any tables were found
if not df_list:
# If no tables were found, create a DataFrame with empty values
df = pd.DataFrame("", index=range(1, 32), columns=["日期", "天气状况", "气温范围", "风力风向"])
else:
df = df_list[0]
# If there are fewer than 31 rows, append empty rows
if len(df) < 31:
empty_rows = pd.DataFrame("", index=range(len(df) + 1, 32), columns=df.columns)
df = pd.concat([df, empty_rows])
return df
```
这样,如果获取的天气数据少于 31 天,就会在 DataFrame 的末尾添加空的行,以保证 DataFrame 的长度为 31。在最后将所有的 DataFrame 合并为一个时,空的行会自动填充为空值。
阅读全文