酷代码 AI
菜单
全部AI  /  AI写代码神器
服务商

1. 爬取和分析京东网站数据; 2. 用自己的学号作为项目名称; 3. 用搜索关键字爬取“京东网站”,并爬取“笔记本”商品的下列数据:商品名、价格、店铺名、评价数; 4. 将数据保存到 mongodb数据库中; 5. 用pandas工具包读取数据库中的数据进行下列分析,并用matplotlib可视化输出: a. 读取数据库中“笔记本”数据。 b. 预处理:将价格转换为浮点数,将评价数转换为整数。 c. 分析笔记本价格分布:直方图(x轴表示价格、y轴表示该价格区间的商品数量),添加样本总数说明。 d. 分析联想各型号笔记本的销售量和均价,绘制两个柱状图:x轴表示笔记本型号、y轴表示该笔记本销量或均价,并标明销量或均价值。

项目名称:学号_京东笔记本数据分析 爬虫部分 ```python import requests from bs4 import BeautifulSoup import pymongo import re # MongoDB连接 client = pymongo.MongoClient('mongodb://localhost:27017/') db = client['学号_京东笔记本数据'] collection = db['notebooks'] def get_product_info(url): headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3' } response = requests.get(url, headers=headers) soup = BeautifulSoup(response.text, 'html.parser') products = [] items = soup.find_all('li', class_='gl-item') for item in items: name = item.find('div', class_='p-name').a.em.text.strip() price = item.find('strong', class_='J_price').i.text.strip() shop = item.find('a', class_='curr-shop').text.strip() comments = item.find('a', class_='J_comment').text.strip() # 数据清洗 price = float(re.sub(r'[^\d.]', '', price)) comments = int(re.sub(r'\D', '', comments)) product = { 'name': name, 'price': price, 'shop': shop, 'comments': comments } products.append(product) return products def save_to_mongodb(products): collection.insert_many(products) def main(): url = 'https://search.jd.com/Search?keyword=笔记本&enc=utf-8' products = get_product_info(url) save_to_mongodb(products) print(f'已爬取 {len(products)} 条数据并保存到 MongoDB') if __name__ == '__main__': main() ``` 数据分析部分 ```python import pandas as pd import matplotlib.pyplot as plt # 连接 MongoDB client = pymongo.MongoClient('mongodb://localhost:27017/') db = client['学号_京东笔记本数据'] collection = db['notebooks'] # 读取数据 data = list(collection.find()) df = pd.DataFrame(data) # 数据预处理 df['price'] = df['price'].astype(float) df['comments'] = df['comments'].astype(int) # 价格分布直方图 plt.figure(figsize=(10, 6)) plt.hist(df['price'], bins=30, edgecolor='black') plt.title('笔记本价格分布') plt.xlabel('价格') plt.ylabel('数量') plt.text(0.95, 0.95, f'总样本数: {len(df)}', ha='right', va='top', transform=plt.gca().transAxes) plt.show() # 联想笔记本分析 lenovo_df = df[df['name'].str.contains('联想')] model_sales = lenovo_df.groupby('name')['comments'].sum().sort_values(ascending=False) model_prices = lenovo_df.groupby('name')['price'].mean() # 销售量柱状图 plt.figure(figsize=(12, 6)) model_sales.plot(kind='bar') plt.title('联想笔记本销售量') plt.xlabel('型号') plt.ylabel('销量') for i, v in enumerate(model_sales): plt.text(i, v + 10, str(v), ha='center', va='bottom') plt.show() # 均价柱状图 plt.figure(figsize=(12, 6)) model_prices.plot(kind='bar', color='skyblue') plt.title('联想笔记本均价') plt.xlabel('型号') plt.ylabel('均价') for i, v in enumerate(model_prices): plt.text(i, v + 10, f'{v:.2f}', ha='center', va='bottom') plt.show() ``` 需要注意的逻辑点: 1. 反爬虫机制:京东网站有反爬虫机制,频繁请求可能会被封 IP。可以考虑使用代理 IP 或者设置合理的请求间隔时间。 2. 数据清洗:在爬取数据时,商品名、价格、店铺名、评价数等字段可能包含特殊字符或空格,需要进行适当的清洗处理。 3. 异常处理:在爬取和处理数据时,可能会遇到网络请求失败、解析错误等情况,建议添加异常处理机制,确保程序的健壮性。 [2024-12-12 00:20:07 | AI写代码神器 | 968点数解答]

热门AI查看更多
“AI写代码神器”擅长各种语言编程、解释代码、注解补充。 在这里填写你的问题。如:写出java冒泡排序算法。
一个入口掌握所有。 在这输入任何问题,或者要AI输出的内容。
将阿拉伯数字转为人明币大写,如:数字1000转换为壹仟。
AI生成爆文标题,能够快速创作出极具吸引力的标题,促使短视频、自媒体文章的点击率与阅读量迅猛攀升。 此处填写一个原始标题,如:一般人怎样打理自身的社交圈?
AI生成新闻评论。 在这里填入新闻内容。
AI生成内容摘要。 在此处填入需要生成摘要的内容,还可以输入4000字。
AI生成主持词,擅长团建、年会、婚礼、节日等场合的主持词编写。 在这里填入主持场景,如:运动会
AI快速生成周报、月报、日报、年终总结等各类总结报告。 在这里简单输入工作目标、指标、成果,没有任何格式或特殊需求。如:计划年销售业绩1000万,实际完成800万。
输入一个字,显示以这个字开头的歇后语
输入一个字,显示以这个字开头的成语
极速在线生成证件照
极速更换证件照红、蓝、白底色
实用工具查看更多
阿里云99元2核2G服务器/年,199元2核4G服务器随心买。
今日油价 [生活类]
全国各省油价,实时更新。
图片互转base64 [开发类]
将图片转换为Base64编码,可以让你很方便地在没有上传文件的条件下将图片插入其它的网页、编辑器中。 这对于一些小的图片是极为方便的,因为你不需要再去寻找一个保存图片的地方。
时间转换器 [开发类]
时间戳转换器,时间、毫秒、秒、倒计时查看
录入名字、电话、邮箱、个人介绍信息,生成二维码,可通过此码扫码添加微信联系人
数独游戏 [娱乐类]
数独(Sudoku)是经典的9x9数字逻辑谜题。在有81个小格的九宫格内,玩家依据初始数字推理填入1 - 9的数字,要保证每行、每列以及每个3x3宫格中的数字都不重复。这款在线数独游戏有多难度可选,没有头绪时,可以点开答案看一下哦^_^
经典推箱子 [娱乐类]
基于H5的经典推箱子小游戏,锻炼玩家的眼力和反应力,非常不错
AI摸鱼五子棋 [娱乐类]
基于H5的五子棋人机对练,锻炼玩家的眼力和反应力,非常不错
相关提问