我不熟悉python
我想从网站“http://www.estesparkweather.net/archive_reports.php?date=200901“抓取天气数据,我必须抓取从2009-01-01到2018-10-28每天天气数据的所有可用属性,我必须将抓取的数据表示为Pandas Dataframe 对象。
以下应为 Dataframe 特定详细信息
Expected column names (order dose not matter):
['Average temperature (°F)', 'Average humidity (%)',
'Average dewpoint (°F)', 'Average barometer (in)',
'Average windspeed (mph)', 'Average gustspeed (mph)',
'Average direction (°deg)', 'Rainfall for month (in)',
'Rainfall for year (in)', 'Maximum rain per minute',
'Maximum temperature (°F)', 'Minimum temperature (°F)',
'Maximum humidity (%)', 'Minimum humidity (%)', 'Maximum pressure',
'Minimum pressure', 'Maximum windspeed (mph)',
'Maximum gust speed (mph)', 'Maximum heat index (°F)']
Each record in the dataframe corresponds to weather details of a given day
The index column is date-time format (yyyy-mm-dd)
I need to perform necessary data cleaning and type cast each attributes to relevent data type
刮擦后,我需要将 Dataframe 保存为pickle文件,名称为“dataframe.pk”
下面是我最初只是尝试使用Beautifulsoup阅读页面的代码,但有多个页面月,我不知道如何循环从2009年1月到2018年10月的网址,并获得该内容到汤,有人能帮助吗:
***import bs4
from bs4 import BeautifulSoup
import csv
import requests
import time
import pandas as pd
import urllib
import re
import pickle
import numpy as np
url = "http://www.estesparkweather.net/archive_reports.php?date=200901"
page = requests.get(url)
soup=BeautifulSoup(page.content,"html.parser")
type(soup)
bs4.BeautifulSoup
# Get the title
title = soup.title
print(title)
# Print out the text
text = soup.get_text()
print(soup.text)
# Print the first 10 rows for sanity check
rows = soup.find_all('tr')
print(rows[:10])***
3条答案
按热度按时间vuktfyat1#
要阅读2009年1月1日至2018年10月28日时间范围内的信息,您必须了解URL模式
示例:
因此,您需要创建一个嵌套循环来读取每个年/月组合的数据。
比如:
3okqufwl2#
我只是试着用你最初的问题陈述从头开始写,对我来说效果很好
这应该是您所需的 Dataframe ,您可以在此 Dataframe 上进一步执行所需的操作
您将需要导入所需模块此提取数据从2009年0月1日至2018年10月31日。您可能需要删除最后3条记录以获得2018年10月28日之前的数据
mwg9r5ms3#
下面是对我有效的一个