一、介绍
网络抓取是从互联网提取信息的基本技术(近几年,由于网络信息安全越来越受重视,在此提醒开发者,从网上抓取信息务必做到合规合法,以免遇到不必要的麻烦)。 在本文中,我们将演示如何使用 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