Python网络爬虫技术项目化教程 课件项目八综合案例-构建电商网站并使用网络爬虫爬取数据_第1页
Python网络爬虫技术项目化教程 课件项目八综合案例-构建电商网站并使用网络爬虫爬取数据_第2页
Python网络爬虫技术项目化教程 课件项目八综合案例-构建电商网站并使用网络爬虫爬取数据_第3页
Python网络爬虫技术项目化教程 课件项目八综合案例-构建电商网站并使用网络爬虫爬取数据_第4页
Python网络爬虫技术项目化教程 课件项目八综合案例-构建电商网站并使用网络爬虫爬取数据_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

项目8综合案例——构建电商网站并使用爬虫爬取数据任务8.1认识电商网站8.1.1电商网站介绍随着互联网和电子商务的快速发展,线上购物已经成为人们日常生活的重要组成部分。电商平台不仅承载着商品展示、交易等核心功能,还积累了大量的用户行为数据和商品信息。

图8-1所示为电商网站。该网站包含图片与文字,用于向用户展示相关商品信息。8.1.2爬虫与电商网站在讨论爬虫与电商网站的关系时,我们主要关注如何运用爬虫技术从电商网站上抓取数据,如商品信息、价格信息、库存状态、用户评论等。商品信息:包括名称、描述、规格等。价格信息:实时监控商品价格变动情况。库存状态:了解商品的库存情况。用户评论:收集用户对商品的评价,用于分析产品满意度和改进方向。数据类型描

述商品信息包括名称、描述、规格等,用于构建商品数据库、展示页面内容价格信息商品当前售价,用于比价系统、价格监控、促销分析库存状态当前可售数量,用于库存预警、补货提醒、销售预测用户评论用户对商品的评价,用于用户满意度分析、情感分析、产品改进8.1.2爬虫与电商网站以下为典型的电商商品结构化数据模型:

product={"name":"无线蓝牙耳机","price":"¥299.00","image_url":"/earphones.jpg","description":"高保真音质,主动降噪,续航30小时","rating":4.8,"reviews":1567,"store":"数码优选旗舰店"}

用户可以基于该模型将数据存储到本地数据库中,并进行数据分析。8.1.2爬虫与电商网站为了开始爬取电商网站的数据,用户需要准备以下工具和技术栈。(1)Python环境(建议使用3.x版本):Python语法简洁,生态丰富,是目前主流的数据采集语言。(2)Requests:模拟浏览器访问网页,获取HTML源码。(3)BeautifulSoup或lxml:用于解析HTML文档。任务8.2构建电商平台8.2.1认识Flask本任务使用Flask构建一个简单的网站。Flask是一款轻量级的PythonWeb框架,适合快速搭建原型系统和小型网站,尤其适用于构建功能完整且规模适中的电商网站。Flask不依赖过多内置组件,学习成本低,适合初学者使用。相较于Django等大型框架,Flask更为简洁,便于理解整个请求-响应流程。一个常见的电商网站项目结构如下(基于Flask):

├──app.py #Flask主程序├──config.py #配置文件(如数据库连接)├──templates/ #用于存储HTML模板文件│├──index.html #首页(商品展示)│├──product_detail.html #商品详情页│└──cart.html #购物车页面├──static/ #用于存储静态资源(CSS、图片、JS)│├──css/││└──style.css│└──images/安装Flask:

pipinstallflask

成功安装Flask后,即可开展本任务的实施。1.搭建网站在Python中输入以下代码:

fromflaskimportFlask,render_templateapp=Flask(__name__)#模拟商品数据products=[{"id":1,"name":"iPhone15","price":6999,"stock":10},{"id":2,"name":"MacBookPro","price":14999,"stock":5},{"id":3,"name":"iPadAir","price":4799,"stock":8},]@app.route("/")defhome():returnrender_template("index.html",products=products)if__name__=="__main__":app.run(debug=True)在templates文件夹中创建index.html文件,并写入以下代码:<!DOCTYPEhtml><htmllang="zh"><head><metacharset="UTF-8"><title>电商网站</title><style>body{font-family:Arial;padding:20px;}.product{border:1pxsolid#ddd;margin:10px0;padding:10px;}.price{color:red;font-weight:bold;}</style></head><body><h1>欢迎来到我的电商网站</h1>{%forproductinproducts%}<divclass="product"><h3>{{}}</h3><pclass="price">价格:¥{{product.price}}</p><p>库存:{{product.stock}}件</p></div>{%endfor%}</body></html>在PyCharm中运行app.py,结果如图8-2所示。在浏览器中打开网站:5000/,即可查看该网站内容,如图8-3所示。任务8.3爬取电商网站数据8.3.1编写代码编写一个网络爬虫程序(8-1.py),用于从本地Flask构建的电商网站(运行于http:

//localhost:5000)中抓取商品信息。代码如下:importrequestsfrombs4importBeautifulSoupurl="http://localhost:5000"response=requests.get(url)soup=BeautifulSoup(response.text,'html.parser')items=soup.find_all('div',class_='product')print("商品信息:")foriteminitems:#提取商品名称

name=item.find('h3').get_text(strip=True)#提取价格信息

price=item.find('p',class_='price').get_text(strip=True)

stock=item.find_all('p')[-1].get_text(strip=True)

print(f"商品名:{name}")

print(f"价格:{price}")

print(f"库存:{stock}")

print("-"*30)8.3.2运行爬虫在执行爬虫前,请确保本地电商网站已启动(Flask应用正在运行),否则会提示连接失败。运行结果如图8-4所示。8.3.3

将数据保存为CSV文件使用Python内置的csv模块实现数据写入,代码如下:

importrequestsfrombs4importBeautifulSoupimportcsvurl="http://localhost:5000"response=requests.get(url)soup=BeautifulSoup(response.text,'html.parser')items=soup.find_all('div',class_='product')#打开CSV文件,准备写入数据withopen('products1.csv',mode='w',newline='',encoding='utf-8-sig')asf:writer=csv.writer(f)#写入表头writer.writerow(['商品名','价格','库存'])print("商品信息:")foriteminitems:name=item.find('h3').get_text(strip=True)price=item.find('p',class_='price').get_text(strip=True).replace('价格:¥','')stock=item.find_all('p')[-1].get_text(strip=True).replace('库存:','').replace('件','')#写入一行数据writer.writerow([name,price,stock])#控制台输出print(f"商品名:{name}")print(f"价格:¥{price}")print(f"库存:{stock}件")print("-"*30)print("商品信息已成功保存到product1s.csv文件中!")8.3.4数据分析在爬取电商网站数据并保存为CSV文件后,使用Pandas进行数据分析是一个非常实用的进阶任务。Pandas是Python中最强大的数据处理和分析库之一,能够轻松实现对商品价格、库存等信息的统计与可视化。使用pandas对之前爬取并保存的products.csv文件进行如下分析。①查看数据概览(前几行)。②商品数量统计。③平均价格、最高/最低价格。④总库存量、平均库存。⑤可视化:商品价格柱状图。8.3.4数据分析importpandasaspdimportmatplotlib.pyplotaspltplt.rcParams['font.sans-serif']=['SimHei']#设置字体#读取CSV文件df=pd.read_csv('products1.csv',encoding='utf-8-sig')

#数据预览print("【数据预览】")print(df.head())

#数据类型转换(将字符串类型转为数值类型)df['价格']=pd.to_numeric(df['价格'],errors='coerce')df['库存']=pd.to_numeric(df['库存'],errors='coerce')

#统计分析print("\n【统计分析】")print(f"商品总数:{len(df)}种")print(f"平均价格:¥{df['价格'].mean():.2f}")print(f"最高价格:¥{df['价格'].max()}")print(f"最低价格:¥{df['价格'].min()}")print(f"总库存量:{df['库存'].sum()}件")print(f"平均库存:{df['库存'].mean():.2f}件")

#商品价格排序(从高到低)print("\n【按价格排序】")print(df.sort_values(by='价格',ascendin

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论