【Python爬虫+数据分析】采集电商平台数据信息,并做可视化演示

文章目录

  • 前言
  • 一、准备工作
  • 二、分析目标网站
    • 1.商品信息
  • 三、编写爬虫程序
  • 五、总结


前言

随着电商平台的兴起,越来越多的人开始在网上购物。而对于电商平台来说,商品信息、价格、评论等数据是非常重要的。因此,抓取电商平台的商品信息、价格、评论等数据成为了一项非常有价值的工作。本文将介绍如何使用Python编写爬虫程序,抓取电商平台的商品信息、价格、评论等数据。

给大家准备了一些Python相关的资料都可拿走

请添加图片描述

一、准备工作

在开始编写爬虫程序之前,我们需要准备一些工具和环境。

Python3.8
PyCharm

二、分析目标网站

在开始编写爬虫程序之前,我们需要先分析目标网站的结构和数据。在本文中,我们选择抓取京东商城的商品信息、价格、评论等数据。

1.商品信息

  1. 商城的商品信息包括商品名称、商品编号、商品分类、商品品牌、商品型号、商品规格、商品产地、商品重量、商品包装等信息。这些信息可以在商品详情页面中找到。

  2. 价格
    商城的商品价格包括商品原价、商品促销价、商品折扣等信息。这些信息可以在商品详情页面中找到。

  3. 评论
    京东商城的商品评论包括用户评价、用户晒图、用户追评等信息。这些信息可以在商品详情页面中找到。

三、编写爬虫程序

在分析目标网站的结构和数据之后,我们可以开始编写爬虫程序了。在本文中,我们使用Scrapy框架编写爬虫程序,将抓取到的数据保存到MySQL数据库中。

  1. 创建Scrapy项目

首先,我们需要创建一个Scrapy项目。在命令行中输入以下命令:

scrapy startproject jingdong

这将创建一个名为jingdong的Scrapy项目。

  1. 创建爬虫

接下来,我们需要创建一个爬虫。在命令行中输入以下命令:

scrapy genspider jingdong_spider jd.com

这将创建一个名为jingdong_spider的爬虫,爬取的网站为jd.com。

  1. 编写爬虫代码

在创建完爬虫之后,我们需要编写爬虫代码。在Scrapy框架中,爬虫代码主要包括以下几个部分:

(1)定义Item

Item是Scrapy框架中的一个概念,它用于定义要抓取的数据结构。在本文中,我们需要定义一个Item,用于保存商品信息、价格、评论等数据。在项目的items.py文件中,添加以下代码:

import scrapyclass JingdongItem(scrapy.Item):# define the fields for your item here like:# name = scrapy.Field()name = scrapy.Field()sku = scrapy.Field()category = scrapy.Field()brand = scrapy.Field()model = scrapy.Field()spec = scrapy.Field()origin = scrapy.Field()weight = scrapy.Field()package = scrapy.Field()price = scrapy.Field()promotion_price = scrapy.Field()discount = scrapy.Field()comment = scrapy.Field()image_urls = scrapy.Field()images = scrapy.Field()

这里定义了一个名为JingdongItem的Item,包括商品名称、商品编号、商品分类、商品品牌、商品型号、商品规格、商品产地、商品重量、商品包装、商品价格、商品促销价、商品折扣、商品评论、商品图片等字段。

(2)编写爬虫代码
在项目的spiders目录下,打开jingdong_spider.py文件,添加以下代码:

import scrapy
from jingdong.items import JingdongItemclass JingdongSpider(scrapy.Spider):name = 'jingdong'allowed_domains = ['jd.com']start_urls = ['https://www.jd.com/']def parse(self, response):# 获取所有分类链接category_links = response.xpath('//div[@class="category-item"]/div[@class="item-list"]/ul/li/a/@href')for link in category_links:yield scrapy.Request(link.extract(), callback=self.parse_category)def parse_category(self, response):# 获取所有商品链接product_links = response.xpath('//div[@class="gl-i-wrap"]/div[@class="p-img"]/a/@href')for link in product_links:yield scrapy.Request(link.extract(), callback=self.parse_product)# 获取下一页链接next_page_link = response.xpath('//a[@class="pn-next"]/@href')if next_page_link:yield scrapy.Request(next_page_link.extract_first(), callback=self.parse_category)def parse_product(self, response):item = JingdongItem()# 获取商品名称item['name'] = response.xpath('//div[@class="sku-name"]/text()')[0].extract()# 获取商品编号item['sku'] = response.xpath('//div[@class="itemInfo-wrap"]/div[@class="clearfix"]/div[@class="sku"]/div[@class="item"]/div[@class="name"]/text()')[0].extract()# 获取商品分类category_list = response.xpath('//div[@class="breadcrumb"]/a/text()')item['category'] = '>'.join(category_list.extract())# 获取商品品牌item['brand'] = response.xpath('//div[@class="itemInfo-wrap"]/div[@class="clearfix"]/div[@class="sku-name"]/a/@title')[0].extract()# 获取商品型号item['model'] = response.xpath('//div[@class="Ptable"]/div[@class="Ptable-item"]/dl/dt/text()')[0].extract()# 获取商品规格spec_list = response.xpath('//div[@class="Ptable"]/div[@class="Ptable-item"]/dl/dd/ul/li/text()')item['spec'] = ','.join(spec_list.extract())# 获取商品产地item['origin'] = response.xpath('//div[@class="Ptable"]/div[@class="Ptable-item"]/dl/dd/text()')[0].extract()# 获取商品重量item['weight'] = response.xpath('//div[@class="Ptable"]/div[@class="Ptable-item"]/dl/dd/text()')[1].extract()# 获取商品包装item['package'] = response.xpath('//div[@class="Ptable"]/div[@class="Ptable-item"]/dl/dd/text()')[2].extract()# 获取商品价格price_list = response.xpath('//div[@class="summary-price-wrap"]/div[@class="summary-price J-summary-price"]/div[@class="dd"]/span/text()')item['price'] = price_list[0].extract()item['promotion_price'] = price_list[1].extract() if len(price_list) > 1 else ''item['discount'] = response.xpath('//div[@class="summary-price-wrap"]/div[@class="summary-price J-summary-price"]/div[@class="dd"]/div[@class="promo"]/span/text()')[0].extract()# 获取商品评论comment_list = response.xpath('//div[@class="comment-item"]')comment_text_list = []for comment in comment_list:comment_text = comment.xpath('div[@class="comment-column J-comment-column"]/div[@class="comment-con"]/div[@class="comment-con-top"]/div[@class="comment-con-txt"]/text()').extract_first()if comment_text:comment_text_list.append(comment_text.strip())item['comment'] = '\n'.join(comment_text_list)# 获取商品图片item['image_urls'] = response.xpath('//div[@class="spec-items"]/ul/li/img/@src')item['images'] = []yield item

这里定义了一个名为JingdongSpider的爬虫,首先获取所有分类链接,然后依次访问每个分类页面,获取所有商品链接,然后依次访问每个商品页面,抓取商品信息、价格、评论等数据,并保存到Item中。

(3)配置数据库

在项目的settings.py文件中,添加以下代码:

ITEM_PIPELINES = {'jingdong.pipelines.JingdongPipeline': 300,
}MYSQL_HOST = 'localhost'
MYSQL_PORT = 3306
MYSQL_USER = 'root'
MYSQL_PASSWORD = '123456'
MYSQL_DBNAME = 'jingdong'

这里定义了一个名为JingdongPipeline的管道,用于将抓取到的数据保存到MySQL数据库中。同时,配置了MySQL数据库的连接信息。

(4)编写管道代码

在项目的pipelines.py文件中,添加以下代码:

import pymysql
from scrapy.exceptions import DropItem
from scrapy.pipelines.images import ImagesPipeline
from jingdong.items import JingdongItemclass JingdongPipeline(object):def __init__(self, host, port, user, password, dbname):self.host = hostself.port = portself.user = userself.password = passwordself.dbname = dbname@classmethoddef from_crawler(cls, crawler):return cls(host=crawler.settings.get('MYSQL_HOST'),port=crawler.settings.get('MYSQL_PORT'),user=crawler.settings.get('MYSQL_USER'),password=crawler.settings.get('MYSQL_PASSWORD'),dbname=crawler.settings.get('MYSQL_DBNAME'))def open_spider(self, spider):self.conn = pymysql.connect(host=self.host, port=self.port, user=self.user, password=self.password, db=self.dbname, charset='utf8')self.cursor = self.conn.cursor()def close_spider(self, spider):self.conn.close()def process_item(self, item, spider):if not isinstance(item, JingdongItem):return item# 保存商品信息sql = 'INSERT INTO product(name, sku, category, brand, model, spec, origin, weight, package, price, promotion_price, discount, comment) VALUES(%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)'self.cursor.execute(sql, (item['name'], item['sku'], item['category'], item['brand'], item['model'], item['spec'], item['origin'], item['weight'], item['package'], item['price'], item['promotion_price'], item['discount'], item['comment']))product_id = self.cursor.lastrowid# 保存商品图片if item['image_urls']:for image_url in item['image_urls']:self.cursor.execute('INSERT INTO image(product_id, url) VALUES(%s, %s)', (product_id, image_url))self.conn.commit()return item

这里定义了一个名为JingdongPipeline的管道,用于将抓取到的数据保存到MySQL数据库中。在process_item方法中,首先保存商品信息到product表中,然后保存商品图片到image表中。

(5)配置图片下载

在项目的settings.py文件中,添加以下代码:

ITEM_PIPELINES = {'jingdong.pipelines.JingdongPipeline': 300,'scrapy.pipelines.images.ImagesPipeline': 1,
}IMAGES_STORE = 'images'

这里配置了图片下载的管道和存储路径。

(6)运行爬虫

在命令行中输入以下命令,运行爬虫:

scrapy crawl jingdong

这将启动爬虫程序,开始抓取京东商城的商品信息、价格、评论等数据,并保存到MySQL数据库中。

五、总结

本文介绍了如何使用Python编写爬虫程序,抓取电商平台的商品信息、价格、评论等数据。通过本文的学习,您可以了解到Scrapy框架的基本使用方法,以及如何将抓取到的数据保存到MySQL数据库中。同时还可以学习到如何模拟浏览器的行为,抓取动态页面的数据。希望本文对您有所帮助。

↓ ↓ ↓ 下方名片找我,各种源码还有案例 ↓ ↓ ↓

请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/63767.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

利用Python进行词频统计并生成词云——以京东商城iphone13购物评论为例

本文介绍一种快速生成关键词-词频统计-词云生成的办法,作为Python数据分析初级技能,除基本运行环境外无需其他软件或工具,且流程搭建成功后可重复利用,可极大提升相似事务的处理效率。 一、操作环境 1.1 搭建Python运行环境&#…

Python爬虫+可视化分析技术实现招聘网站岗位数据抓取与分析推荐系统

程序主要采用Python 爬虫flask框架htmljavascript实现岗位推荐分析可视化系统,实现工作岗位的实时发现,推荐检索,快速更新以及工作类型的区域分布效果,关键词占比分析等。 程序模块实现 工作范围分布 岗位区域分布 岗位技术情况…

API接口调用,获取淘宝天猫,拼多多,1688等平台商品详情,python采集爬虫数据

Python技术 爬虫(又称为网页蜘蛛,网络机器人,在 FOAF 社区中间,更经常的称为网页追逐者);它是一种按照一定的规则,自动地抓取网络信息的程序或者脚本。 如果我们把互联网比作一张大的蜘蛛网&a…

使用python爬取BOSS直聘岗位数据并做可视化(Boss直聘对网页做了一些修改,现在的代码已经不能用了)

使用python爬取BOSS直聘岗位数据并做可视化 结果展示首页岗位信息岗位详情薪资表学历需求公司排名岗位关键词福利关键词 代码展示爬虫代码一、导入库二、爬取数据1、爬取数据代码展示2、通过selenium打开浏览器(1)打开网页(2)找到…

用Python对淘宝用户行为数据的分析

目录 项目前言 一、分析目的 二、数据获取与理解 1.数据来源 2.理解数据 三、具体做法 1.导入并清洗数据 3.1.1.把时间戳改为datetime类型 3.1.2.查看是否存在重复的行数据 3.1.3.查看列中是否存在缺失数据 2.用户维度 3.2.1.一个月内每天pv、uv的变化 ​3.2.2.日A…

小白也可以开发闲鱼自动化工具(自动找爆款)

在闲鱼上,我们的课程里面教给大家,如何找爆款,主要是看数据,分析,那么这个分析过程,能否自动化下? 事实是可以的。这个是这几天写的一个,自动化分析电脑这个词下面的一些爆款&#x…

基于Python+网络爬虫的兼职招聘就业信息数据可视化分析

🔥作者:雨晨源码🔥 💖简介:java、微信小程序、安卓;定制开发,远程调试 代码讲解,文档指导,ppt制作💖 精彩专栏推荐订阅:在下方专栏👇&…

Python抓取电商平台数据 / 采集商品评论 / 可视化展示 词云图...

前言 大家早好、午好、晚好吖 ❤ ~ 我给大家准备了一些资料,包括: 2022最新Python视频教程、Python电子书10个G (涵盖基础、爬虫、数据分析、web开发、机器学习、人工智能、面试题)、Python学习路线图等等 直接在文末名片自取即可&#x…

chatgpt赋能python:Python简单数据采集教程:提高SEO排名的必要工具

Python简单数据采集教程:提高SEO排名的必要工具 在当前数字化时代下,数据已经成为商业流量和营销策略中至关重要的交易资源。因此,数据采集成为了提高SEO排名的必要手段之一。现在,Python由于其强大的数据处理能力被广泛应用于数…

利用 Python 爬虫采集 1688商品详情关键词数据-API

要利用 Python 爬虫采集 1688 商品详情数据,需要先了解 1688 网站的页面结构和数据请求方式。一般使用 requests 库请求网站的数据,使用 BeautifulSoup 库解析网页中的数据。 以下是一个简单的 Python 爬虫采集 1688 商品详情数据的示例代码&#xff1a…

英特尔淘汰迷你电脑,宣布放弃 NUC 业务!

整理 | 屠敏 出品 | CSDN(ID:CSDNnews) 相比造芯这件事,也许有很多人不知道全球知名半导体公司英特尔还在造电脑。 只是有些遗憾的是,据外媒 ServetheHome 报道,英特尔已经开始通知其生态系统的合作伙伴们&…

Web版和客户端哪种SQL工具更好?ChatGPT有话要说

2023年年初公司发布了一款Web版SQL工具,短期内就赢得了众多用户的喜爱和下载。不过,也有SQL用户在评论区中提出自己的观点,认为Web版工具都不可靠,甚至看见Web版工具就劝返… … 工具Web化逐渐成为一种趋势,比如&…

自动批量日文翻译工具,免费日文等小语种翻译互译工具

日文翻译工具具有日文、俄语、韩语、德语等多国小语种翻译,支持日文整篇文章翻译成中文等多种语种,长篇文章翻译后保留原文格式段落,并通过批量内容编辑处理,实现翻译后的文章敏感词删除、插图图片和同义词替换实现本地化翻译。 日…

谁说首富不懂技术!马斯克晒出Twitter2.0架构图

推荐阅读: 《重磅:Spring Boot 3.0 发布!》 《职场霸凌、潜规则,已经这么猖獗了吗。。》 出品 | OSC开源社区(ID:oschina2013) 近日,马斯克前往 Twitter 总部大楼和工程师团队进行了 code revie…

马斯克在中国的44小时!行程、会面与表态,释放出什么信号?

时隔3年,“自带流量”的美国特斯拉首席执行官马斯克再次到访中国,从公布的信息来看,可谓是行程满满。在中美关系似乎春寒料峭之际,马斯克的来华及表态极具象征意义。 马斯克:反对“脱钩断链” 5月30日下午15时30分左右…

TikTok广告投放指南(基础入门)

TikTok 在全球拥有超过5亿活跃用户,目前还属于一个红利期阶段,在 TikTok 号称开放广告投放后,发现先机的各方卖家纷纷涌入,俨然让它成为炙手可热的广告投放池。 TikTok拥有大量低价流量,人气赶超老牌社媒,再…

腾讯广点通广告投放-Web转化数据API自归因文档对接

关于自建H5落地页投放广告的流程总结 文档地址 Web转化数据API自归因文档 流程 转化归因配置 配置页面地址:https://ad.qq.com/atlas/22172840/tool/conversionspec选择网页转化新建网页转化API自归因上报 PS:关于点击监测链接的说明: …

TikTok运营指南:如何通过TikTok广告实现社媒引流?

短视频平台TikTok在海外可以说是越来越火了,很多做跨境电商的开始涌向TikTok这个平台去营销推广,所以如果你每天日思夜想怎样推出一个新产品,怎样以低成本引流客源和提供销售量,都可以利用 TikTok广告来实现社媒引流,目…

为什么选择TikTok广告?TikTok广告投放如何操作?TikTok广告教程

为什么选择TikTok广告? TikTok是发展最快的社交媒体平台,迄今为止下载量已超过20亿。尤其是在这个大流行的世界中,TikTok可以让人们通过创建自己的内容来寻找新颖有趣的方式彼此联系,从而获得新鲜的空气。 尽管TikTok并未发布受众…

开封抖音广告如何有效投放?

抖音广告投放现阶段已经是十分火爆的引流方法引流渠道了,为了更好开展获客,许多面向电脑端顾客的知名品牌,都是会在抖音里开展投放广告,那样,怎样来完成高效的投放广告呢,下列将采取推广流程、方式、价钱&a…