北京物资学院周边外卖红黑榜:一个程序员用Python爬虫+数据分析的真实踩坑记录

张开发
2026/5/30 20:25:10 15 分钟阅读
北京物资学院周边外卖红黑榜:一个程序员用Python爬虫+数据分析的真实踩坑记录
北京物资学院周边外卖数据挖掘实战从爬虫到情感分析的完整避坑指南每次打开外卖软件面对琳琅满目的选择却不知如何下手——这大概是当代都市青年的共同困扰。作为一名住在北京物资学院附近的程序员我决定用技术手段解决这个吃什么的世纪难题。通过Python爬虫抓取美团、饿了么平台数据结合自然语言处理技术最终生成了一份数据驱动的外卖红黑榜。本文将完整分享这个项目的技术路线和实战心得。1. 技术选型与爬虫架构设计外卖平台的数据抓取从来不是件容易的事反爬机制、动态加载、验证码等各种障碍层出不穷。经过多次尝试我最终确定了以下技术栈爬虫框架Scrapy Selenium组合数据存储MongoDB非结构化评价数据存储优势明显分析工具Pandas Jieba SnowNLP可视化Pyecharts WordCloud# 示例动态加载处理的核心代码片段 from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC def parse_shop(driver, shop_id): wait WebDriverWait(driver, 10) driver.get(fhttps://www.meituan.com/meishi/{shop_id}/) # 等待评价区域加载完成 wait.until(EC.presence_of_element_located( (By.CSS_SELECTOR, .comment-list))) # 模拟滚动加载更多评价 for _ in range(3): driver.execute_script(window.scrollTo(0, document.body.scrollHeight);) time.sleep(1.5) # 获取页面最终HTML return driver.page_source提示美团等平台对高频请求非常敏感建议设置合理的请求间隔3-5秒并配合代理IP池使用。2. 数据清洗与特征工程原始评价数据往往包含大量噪声需要进行多轮清洗文本清洗去除特殊符号、表情符号过滤无意义短评如不错、还行等识别并标注刷单评价特征模板化语言五星情感分析 使用SnowNLP库计算每条评价的情感倾向值0-1同时构建自定义情感词典from snownlp import SnowNLP # 扩展领域特定词汇 custom_words { 拉肚子: -0.8, 太辣: -0.5, 保温膜: 0.6, 分量足: 0.7 } def analyze_sentiment(text): s SnowNLP(text) # 基础情感分 自定义词汇调整 base_score s.sentiments for word, weight in custom_words.items(): if word in text: base_score (base_score weight) / 2 return round(base_score, 2)关键信息提取使用正则表达式提取价格区间如人均30元左右Jieba分词提取高频特征词太油、包装好等识别食品安全相关关键词拉肚子、食材不新鲜等3. 数据分析与可视化呈现经过两周的数据采集最终获得了物资学院周边3公里范围内87家餐厅的12,346条有效评价。以下是几个关键发现3.1 餐厅综合评分分布评分区间餐厅数量典型特征4.5-5.012家包装完善、分量稳定4.0-4.523家口味尚可但有个别差评3.5-4.038家评价两极分化明显3.0-3.514家多次出现食品安全投诉3.2 高频关键词词云分析通过WordCloud生成的高频词显示正面评价集中在包装完好、配送快、分量足负面评价高频词包括太油、太辣、拉肚子、食材不新鲜from wordcloud import WordCloud import jieba def generate_wordcloud(texts): word_list [] for text in texts: words jieba.cut(text) word_list.extend([w for w in words if len(w) 1]) wc WordCloud( font_pathmsyh.ttc, background_colorwhite, max_words100 ) wc.generate( .join(word_list)) return wc.to_image()3.3 各菜系风险指数对比分析不同菜系餐厅的差评率发现新疆菜差评率最高32%主要抱怨点辣度不可调节78%差评提及肉类处理问题65%面食类中等风险22%差评率面条过软/过硬61%汤面分离问题39%粥品简餐表现最佳差评率仅9%主要问题集中在配送时间长导致变凉4. 实战避坑指南基于数据分析结果总结出以下选择外卖的实用技巧4.1 红榜推荐原则包装特征有保温膜/保温袋的餐厅食品质量更稳定汤食分离包装可降低撒漏风险评价筛选技巧优先查看带图的真实评价关注配送、包装等关键词警惕全五星但内容空洞的评价4.2 黑榜预警信号当餐厅评价中出现以下特征时需谨慎食品安全红灯多人次反映同一不适症状如拉肚子反复出现异味、变质等描述性价比陷阱分量少出现频率 15%配菜与描述严重不符服务问题漏送餐具/配菜比例高投诉响应速度慢4.3 个人实测推荐清单经过数据筛选亲自试吃这些餐厅值得尝试面食类山西刀削面温榆西路店13次复购零失误门钉肉饼羊杂汆面独立包装保温袋简餐类俏舅妈猪脚饭8次下单品质稳定江川右粥店适合清淡饮食需求特色菜巴依老爷新疆美食备注微辣后体验提升明显这个项目最意外的收获是发现评价数据中包装质量与食品安全存在显著相关性r0.63。那些注重包装细节的餐厅往往食材处理和卫生条件也更规范。下次点外卖时不妨先看看其他顾客上传的包装照片。

更多文章