一、介紹
網絡抓取是從互聯網提取信息的基本技術(近幾年,由於網絡信息安全越來越受重視,在此提醒開發者,從網上抓取信息務必做到合規合法,以免遇到不必要的麻煩)。 在本文中,我們將演示如何使用 BeautifulSoup、Pandas 和 NLTK 等 Python 庫從網絡獲取文本,並從網頁文本中提取主要關鍵字,然後將格式化數據插入到 Pandas DataFrame 中。
二、設置環境
首先,安裝所需的庫:
pip install beautifulsoup4 pandas nltk
三、使用 BeautifulSoup 進行網頁抓取
讓我們首先使用 BeautifulSoup 獲取文章的內容:
import requests
from bs4 import BeautifulSoup
def scrape_article(url):
response = requests.get(url)
soup = BeautifulSoup(response.content, 'html.parser')
article = soup.find('div', class_='article-content')
text = article.get_text(strip=True)
return text
url = 'https://www.example.com/article'
text = scrape_article(url)
將 https://www.example.com/article
替換為目標文章的 URL,並調整 soup.find()
參數以匹配網站的結構。
四、使用 NLTK 進行文本預處理
現在,通過標記化、刪除停用詞和應用詞幹來預處理文本:
import nltk
from nltk.tokenize import word_tokenize
from nltk.corpus import stopwords
from nltk.stem import PorterStemmer
nltk.download('punkt')
nltk.download('stopwords')
def preprocess_text(text):
tokens = word_tokenize(text)
stop_words = set(stopwords.words('english'))
filtered_tokens = [token.lower() for token in tokens if token.lower() not in stop_words]
stemmer = PorterStemmer()
stemmed_tokens = [stemmer.stem(token) for token in filtered_tokens]
return stemmed_tokens
preprocessed_text = preprocess_text(text)
五、提取主要關鍵詞
接下來,通過計算預處理後的 token 的頻率分布來提取主要關鍵詞:
from nltk.probability import FreqDist
def get_main_keywords(tokens, n=10):
freq_dist = FreqDist(tokens)
main_keywords = freq_dist.most_common(n)
return main_keywords
main_keywords = get_main_keywords(preprocessed_text)
六、將關鍵字插入 Pandas DataFrame
最後,將主要關鍵字插入 Pandas DataFrame 中:
import pandas as pd
def keywords_to_dataframe(keywords):
df = pd.DataFrame(keywords, columns=['keyword', 'frequency'])
return df
keywords_df = keywords_to_dataframe(main_keywords)
七、合並到一起做完整的處理
創建一個函數來抓取文章內容、預處理文本、提取主要關鍵字並將它們插入到 Pandas DataFrame 中:
def analyze_article(url):
text = scrape_article(url)
preprocessed_text = preprocess_text(text)
main_keywords = get_main_keywords(preprocessed_text)
keywords_df = keywords_to_dataframe(main_keywords)
return keywords_df
url = 'https://www.example.com/article'
keywords_df = analyze_article(url)
print(keywords_df)
八、結論
在本文中,我們演示了如何使用 BeautifulSoup、Pandas 和 NLTK 等 Python 庫從網絡抓取文本中提取主要關鍵字並將其插入到 Pandas DataFrame 中。 通過應用這些技術,您可以簡單快速地分析文章、發現最重要的關鍵詞等等,當然也以可以在此基礎上做進一步修改升級以便做更深入的網頁文本分析處理。
九、參考資料:
[1] Extracting Main Keywords from Web Scraped Text with BeautifulSoup, Pandas, and NLTK in Python