欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用BeautifulSoup和Pandas進行網頁數據抓取與清洗處理

 更新時間:2025年02月18日 15:54:45   作者:站大爺IP  
在數據分析和機器學習的項目中,數據的獲取,清洗和處理是非常關鍵的步驟,下面我們就來講講如何利用Python中的Beautiful Soup庫進行這樣的操作吧

在數據分析和機器學習的項目中,數據的獲取、清洗和處理是非常關鍵的步驟。今天,我們將通過一個實戰(zhàn)案例,演示如何利用Python中的Beautiful Soup庫進行網頁數據抓取,并使用Pandas庫進行數據清洗和處理。這個案例不僅適合初學者,也能幫助有一定經驗的朋友快速掌握這兩個強大的工具。

一、準備工作

在開始之前,請確保你的Python環(huán)境中已經安裝了requests、beautifulsoup4和pandas庫。你可以通過以下命令安裝它們:

pip install requests beautifulsoup4 pandas

此外,我們需要抓取一個網頁的數據作為示例。為了簡單起見,我們選擇了一個公開的新聞網站頁面。

二、抓取網頁數據

首先,我們需要使用requests庫獲取網頁的HTML內容。然后,使用Beautiful Soup解析HTML,并提取我們感興趣的數據。

import requests
from bs4 import BeautifulSoup
 
# 目標網頁URL
url = 'https://example.com/news'  # 替換為實際的URL
 
# 發(fā)送HTTP請求獲取網頁內容
response = requests.get(url)
response.raise_for_status()  # 檢查請求是否成功
 
# 使用Beautiful Soup解析HTML
soup = BeautifulSoup(response.text, 'html.parser')

假設我們要提取新聞標題、發(fā)布時間和正文內容。通過檢查網頁的HTML結構,我們發(fā)現這些信息都包含在特定的HTML標簽中。

# 提取新聞標題、發(fā)布時間和正文內容
articles = []
for article in soup.select('.news-article'):  # 假設新聞文章都有class="news-article"
    title = article.select_one('h2.title').text.strip()
    publish_time = article.select_one('.publish-time').text.strip()
    content = article.select_one('.content').text.strip()
    articles.append({
        'title': title,
        'publish_time': publish_time,
        'content': content
    })

三、數據清洗

抓取到的數據通常包含一些不需要的信息,比如多余的空格、HTML標簽殘留、特殊字符等。我們需要對這些數據進行清洗。

import pandas as pd
 
# 將數據轉換為DataFrame
df = pd.DataFrame(articles)
 
# 打印前幾行數據查看
print(df.head())
 
# 數據清洗步驟
# 1. 去除字符串前后的空格(已在提取時處理)
# 2. 替換特殊字符(例如換行符為空格)
df['content'] = df['content'].str.replace('\n', ' ')
 
# 3. 刪除缺失值或無效數據(假設空標題或空內容的數據無效)
df = df.dropna(subset=['title', 'content'])
 
# 4. 統(tǒng)一時間格式(假設發(fā)布時間為"YYYY-MM-DD HH:MM:SS"格式)
# 這里我們假設發(fā)布時間已經是字符串格式,且格式統(tǒng)一,如果需要轉換格式,可以使用pd.to_datetime()
# df['publish_time'] = pd.to_datetime(df['publish_time'], format='%Y-%m-%d %H:%M:%S')
 
# 打印清洗后的數據查看
print(df.head())

四、數據處理

數據清洗后,我們可能還需要進行一些額外的處理,比如數據轉換、數據合并、數據分組等。

# 數據處理步驟
# 1. 提取發(fā)布日期的日期部分(如果需要)
# df['publish_date'] = df['publish_time'].dt.date
 
# 2. 統(tǒng)計每個發(fā)布日期的新聞數量(如果需要)
# daily_counts = df['publish_date'].value_counts().reset_index()
# daily_counts.columns = ['publish_date', 'count']
# print(daily_counts)
 
# 3. 根據關鍵詞過濾新聞(例如只保留包含"疫情"關鍵詞的新聞)
keyword = '疫情'
filtered_df = df[df['content'].str.contains(keyword, na=False, case=False)]
 
# 打印過濾后的數據查看
print(filtered_df.head())

五、保存數據

處理完數據后,我們可能需要將其保存到文件中,以便后續(xù)使用。Pandas提供了多種保存數據的方法,比如保存為CSV文件、Excel文件等。

# 保存數據為CSV文件
csv_file_path = 'cleaned_news_data.csv'
df.to_csv(csv_file_path, index=False, encoding='utf-8-sig')
 
# 保存數據為Excel文件
excel_file_path = 'cleaned_news_data.xlsx'
df.to_excel(excel_file_path, index=False, engine='openpyxl')

六、完整代碼示例

為了方便大家理解和運行,以下是完整的代碼示例。請確保將url變量替換為實際的網頁URL,并根據實際的HTML結構調整Beautiful Soup的選擇器。

import requests
from bs4 import BeautifulSoup
import pandas as pd
 
# 目標網頁URL(請?zhí)鎿Q為實際的URL)
url = 'https://example.com/news'
 
# 發(fā)送HTTP請求獲取網頁內容
response = requests.get(url)
response.raise_for_status()
 
# 使用Beautiful Soup解析HTML
soup = BeautifulSoup(response.text, 'html.parser')
 
# 提取新聞標題、發(fā)布時間和正文內容
articles = []
for article in soup.select('.news-article'):  # 假設新聞文章都有class="news-article"
    title = article.select_one('h2.title').text.strip()
    publish_time = article.select_one('.publish-time').text.strip()
    content = article.select_one('.content').text.strip()
    articles.append({
        'title': title,
        'publish_time': publish_time,
        'content': content
    })
 
# 將數據轉換為DataFrame
df = pd.DataFrame(articles)
 
# 數據清洗步驟
df['content'] = df['content'].str.replace('\n', ' ')
df = df.dropna(subset=['title', 'content'])
 
# 數據處理步驟(示例:根據關鍵詞過濾新聞)
keyword = '疫情'
filtered_df = df[df['content'].str.contains(keyword, na=False, case=False)]
 
# 保存數據為CSV文件和Excel文件
csv_file_path = 'cleaned_news_data.csv'
excel_file_path = 'cleaned_news_data.xlsx'
df.to_csv(csv_file_path, index=False, encoding='utf-8-sig')
df.to_excel(excel_file_path, index=False, engine='openpyxl')
 
# 打印過濾后的數據查看
print(filtered_df.head())

七、總結

通過本文,我們學會了如何使用Beautiful Soup進行網頁數據抓取,并使用Pandas進行數據清洗和處理。這兩個庫的結合使用可以大大提高我們處理網頁數據的效率。在實際項目中,你可能需要根據具體的網頁結構和數據需求調整代碼。希望這個實戰(zhàn)案例能幫助你更好地掌握這兩個工具,并在你的數據分析和機器學習項目中發(fā)揮它們的作用。

到此這篇關于使用BeautifulSoup和Pandas進行網頁數據抓取與清洗處理的文章就介紹到這了,更多相關BeautifulSoup Pandas數據抓取與清洗內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Windows 8.1 64bit下搭建 Scrapy 0.22 環(huán)境

    Windows 8.1 64bit下搭建 Scrapy 0.22 環(huán)境

    這篇文章主要介紹了Windows 8.1 64bit下搭建 Scrapy 0.22 環(huán)境,需要的朋友可以參考下
    2018-11-11
  • 深入解析Python中BeautifulSoup4的基礎知識與實戰(zhàn)應用

    深入解析Python中BeautifulSoup4的基礎知識與實戰(zhàn)應用

    BeautifulSoup4正是一款功能強大的解析器,能夠輕松解析HTML和XML文檔,本文將介紹BeautifulSoup4的基礎知識,并通過實際代碼示例進行演示,感興趣的可以了解下
    2024-02-02
  • python中join與os.path.join()函數實例詳解

    python中join與os.path.join()函數實例詳解

    os.path.join()函數用于路徑拼接文件路徑,下面這篇文章主要給大家介紹了關于python中join與os.path.join()函數的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-03-03
  • 將tensorflow的ckpt模型存儲為npy的實例

    將tensorflow的ckpt模型存儲為npy的實例

    今天小編就為大家分享一篇將tensorflow的ckpt模型存儲為npy的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • Django 忘記管理員或忘記管理員密碼 重設登錄密碼的方法

    Django 忘記管理員或忘記管理員密碼 重設登錄密碼的方法

    今天小編就為大家分享一篇Django 忘記管理員或忘記管理員密碼 重設登錄密碼的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • python常見運算符及用法小結

    python常見運算符及用法小結

    python中的運算符主要包括算術運算符,關系(比較)運算符,賦值運算符,邏輯運算符,成員運算符,身份運算符,三目運算符。使用運算符將不同類型的數據按照一定的規(guī)則連接起來的式子,稱為表達式。下面將介紹一些常用的運算符
    2022-08-08
  • Python結合OpenCV和Pyzbar實現實時攝像頭識別二維碼

    Python結合OpenCV和Pyzbar實現實時攝像頭識別二維碼

    這篇文章主要為大家詳細介紹了如何使用Python編程語言結合OpenCV和Pyzbar庫來實時攝像頭識別二維碼,文中的示例代碼講解詳細,需要的可以參考下
    2024-01-01
  • Python實現句子翻譯功能

    Python實現句子翻譯功能

    這篇文章主要介紹了Python實現句子翻譯功能,涉及urllib庫的使用等相關內容,具有一定參考價值,需要的朋友可以了解下。
    2017-11-11
  • python讀取mnist數據集方法案例詳解

    python讀取mnist數據集方法案例詳解

    這篇文章主要介紹了python讀取mnist數據集方法案例詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下
    2021-09-09
  • pyhton列表轉換為數組的實例

    pyhton列表轉換為數組的實例

    下面小編就為大家分享一篇pyhton列表轉換為數組的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04

最新評論