随着生活水平的提高,越来越多的年轻父母开始关注母婴产品的质量和品牌。而母婴电商平台成为了他们选择和购买产品的主要渠道之一。母婴产品市场也因此变得异常活跃且充满竞争。在这样的市场环境下,用户评价不仅反映了产品的实际质量,也揭示了消费者的需求和偏好,成为品牌决策的核心依据之一。
Python 爬虫是获取电商平台用户评价数据、产品详情、价格等关键信息的强大工具。通过抓取和分析这些数据,品牌商可以实时了解市场动态、识别热销产品,进而优化市场策略。本文将介绍如何使用 Python 爬虫从母婴电商平台抓取产品数据,并对用户评价进行深入分析,帮助企业获取市场洞察。
本篇文章将使用以下技术栈:
爬虫工具:
requests
:发送 HTTP 请求,抓取网页数据。BeautifulSoup
:解析网页内容,提取结构化信息。数据处理与分析:
Pandas
:数据清洗与处理。NumPy
:数据计算和转换。Matplotlib
和 Seaborn
:进行数据可视化。自然语言处理(NLP):
jieba
:中文分词,用于对用户评价进行情感分析。TextBlob
:情感分析库,用于对用户评价进行情感倾向分析。数据存储:
CSV
格式:保存爬取的产品数据与评价数据。我们将选择一个主流的母婴电商平台(如“贝贝网”或“京东母婴”)进行数据抓取,目标是获取该平台的热门产品信息和用户评价数据。
以京东母婴平台为例,我们发送 HTTP 请求,抓取页面内容。
import requests
from bs4 import BeautifulSoup
# 母婴产品页面URL(例如京东某个母婴品类页面)
url = 'https://search.jd.com/Search?keyword=%E6%AF%8D%E5%A9%B4&enc=utf-8'
# 设置请求头,模拟浏览器访问
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
}
# 发送请求并获取网页内容
response = requests.get(url, headers=headers)
if response.status_code == 200:
html = response.text
else:
print("网页请求失败!")
html = ''
使用 BeautifulSoup
提取网页中的产品信息,包括产品名称、价格、评分等。接着,我们还需要提取每个产品的用户评价。
# 使用 BeautifulSoup 解析网页
soup = BeautifulSoup(html, 'html.parser')
# 提取产品列表
products = soup.find_all('li', class_='gl-item')
# 存储产品数据
product_list = []
for product in products:
name = product.find('div', class_='p-name').text.strip() # 产品名称
price = product.find('div', class_='p-price').text.strip() # 产品价格
rating = product.find('div', class_='p-commit').text.strip() # 产品评分
link = product.find('a')['href'] # 产品链接
# 存储产品数据
product_list.append({
'产品名称': name,
'价格': price,
'评分': rating,
'链接': f'https:{link}'
})
# 输出抓取的产品数据
for item in product_list:
print(f"产品名称: {item['产品名称']}, 价格: {item['价格']}, 评分: {item['评分']}, 链接: {item['链接']}")
抓取单个产品的用户评价数据,分析产品的用户反馈情况。通常,我们需要从分页中抓取多个页面的用户评论数据。
# 假设我们获取的是某个产品的评论
product_url = 'https://item.jd.com/100012067085.html'
# 发送请求并获取产品评论页面内容
response = requests.get(product_url, headers=headers)
if response.status_code == 200:
html = response.text
else:
print("评论页面请求失败!")
html = ''
# 提取评论内容
soup = BeautifulSoup(html, 'html.parser')
comments = soup.find_all('div', class_='comment-con')
# 存储用户评论
comments_list = []
for comment in comments:
text = comment.find('p').text.strip() # 评论文本
rating = comment.find('span', class_='comment-star').text.strip() # 评论评分
comments_list.append({
'评论文本': text,
'评论评分': rating
})
# 输出部分评论
for comment in comments_list[:5]:
print(f"评论:{comment['评论文本']}, 评分:{comment['评论评分']}")
抓取到的数据将帮助我们进行多维度的分析,特别是通过用户评价的分析,深入理解消费者的偏好与需求。
首先,我们将抓取的数据进行清洗,将价格、评分等字段转换为数值类型,方便后续分析。
import pandas as pd
# 将抓取的产品数据转换为 DataFrame
df_products = pd.DataFrame(product_list)
# 清洗价格字段,去除非数字字符并转换为浮动类型
df_products['价格'] = df_products['价格'].str.replace('¥', '').astype(float)
# 清洗评分字段
df_products['评分'] = df_products['评分'].str.extract(r'(\d+\.\d+)').astype(float)
对于用户评论,我们将使用 jieba
进行中文分词,再利用 TextBlob
进行情感分析,判断评论的情感倾向(正面、负面、中性)。
import jieba
from textblob import TextBlob
# 分词并进行情感分析
def analyze_sentiment(text):
# 使用 jieba 分词
words = jieba.cut(text)
word_list = ' '.join(words)
# 使用 TextBlob 进行情感分析
sentiment = TextBlob(word_list).sentiment.polarity
return sentiment
# 对评论进行情感分析
for comment in comments_list:
comment['情感倾向'] = analyze_sentiment(comment['评论文本'])
# 将评论数据转换为 DataFrame
df_comments = pd.DataFrame(comments_list)
# 输出情感分析后的评论
print(df_comments.head())
我们可以通过可视化技术更直观地了解分析结果。比如,绘制评分分布图,了解消费者对于产品的评分倾向;或者绘制情感分析结果的分布图,分析正面与负面评论的比例。
import matplotlib.pyplot as plt
import seaborn as sns
# 绘制用户评分分布
plt.figure(figsize=(10, 6))
sns.histplot(df_products['评分'], kde=True, color='purple', bins=10)
plt.title('产品评分分布')
plt.xlabel('评分')
plt.ylabel('频数')
plt.grid(True)
plt.show()
# 绘制情感分析结果的分布
plt.figure(figsize=(10, 6))
sns.histplot(df_comments['情感倾向'], kde=True, color='blue', bins=20)
plt.title('评论情感倾向分布')
plt.xlabel('情感倾向(-1 负面, 1 正面)')
plt.ylabel('评论数量')
plt.grid(True)
plt.show()
本文通过实战展示了如何使用 Python 爬虫从母婴电商平台抓取产品数据及用户评价数据,并通过数据分析和情感分析,深入挖掘消费者的真实反馈与市场趋势。
实战总结:
未来,随着数据量的不断增大和分析方法的不断提升,我们可以结合更复杂的机器学习算法(如情感分类、趋势预测等),进一步提升对母婴市场的洞察力。