[英]Python web scraping and saving to a pandas dataframe
[英]Python Web Scraping and Pandas Dataframe
我對 Python 比較陌生,對網絡抓取完全陌生,但我正在嘗試從這個網站收集數據:
https://www.usclimatedata.com/climate/cumming/georgia/united-states/usga1415
我想從 Jan-Dec 的表格中獲取信息並將其放入 Pandas 數據框中並將其打印回給用戶。 我計划對數據做更多的事情,比如計算我自己的平均值和平均值/中位數等,但我最初很難獲取數據。 任何幫助,將不勝感激!!
如果你從文件中獲取數據,你可以使用 (x=pd.read_csv 或者把你使用的文件擴展名而不是 csv ) 和 print(x)
首先查看robots.txt中的網站服務條款,檢查抓取網頁是否合法。
如果是,那么你可以使用bs4的BeautifulSoup包來抓取網頁。
def get_state_holiday_data(self, year: int, state_name: str) -> pd.DataFrame:
try:
pagecontent = self.get_page_content(year, state_name)
holiday_table_list = []
for table in pagecontent.findAll("table"):
for tbody in table.findAll("tbody"):
for row in tbody.findAll("tr"):
holiday_row_list = []
if len(row.findAll("td")) == 3:
for cell_data in row.findAll("td"):
holiday_row_list.append(cell_data.find(text=True).replace('\n', '').strip(' '))
holiday_table_list.append(holiday_row_list)
break
state_holiday_df = pd.DataFrame.from_records(holiday_table_list, columns=['Date', 'Day', 'Holiday'])
state_holiday_df['Date'] = state_holiday_df['Date'].apply(
lambda date: str(year) + '-' + datetime.strptime(date, '%d %b').strftime('%m-%d'))
del state_holiday_df['Day']
return state_holiday_df
except Exception as e:
raise e
以上是抓取表格並將其轉換為數據幀的示例代碼,其中table和tbody是 html table 元素 id/name。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.