簡體   English   中英

Python 網頁抓取和 Pandas 數據框

[英]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中的網站服務條款,檢查抓取網頁是否合法。

如果是,那么你可以使用bs4BeautifulSoup包來抓取網頁。

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

以上是抓取表格並將其轉換為數據幀的示例代碼,其中tabletbody是 html table 元素 id/name。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM