python爬取京东商品信息与可视化

项目介绍:使用python爬取京东电商拿到价格店铺链接销量并做可视化

...........................................................................................................................................................

项目介绍
效果展示
全部代码

........................................................................................................................................................... 

效果展示:

...........................................................................................................................................................

 

.......................................................................................................................................................... 

价格与店铺可视化:

........................................................................................................................................................... 

.......................................................................................................................................................... 

销量与店铺可视化:

.......................................................................................................................................................... 

.......................................................................................................................................................... 

 爬取主函数:

.......................................................................................................................................................... 

import selenium.webdriver as driver
from selenium.webdriver.common.by import By
import time
from lxml import etree
import pandasclass GetData:"""一手数据获取:前端代码"""def __init__(self):# 目标网站:京东iPhone4s搜索页面self.url = 'https://search.jd.com/Search?keyword=%E5%94%90%E5%8D%A1%E5%90%8A%E5%9D%A0&enc=utf-8&wq=%E5%94%90%E5%8D%A1%E5%90%8A%E5%9D%A0&pvid=31f3e974663949f39b95db6bb05ad3f8'# 创建浏览器self.edge = driver.Edge()# 访问指定页面self.edge.get(self.url)def take(self):'对页面进行操作'button = self.edge.find_element(By.CLASS_NAME,'weixin-icon')button.click()# 等待登录time.sleep(10)# 最终数据:目标页面代码self.over_data = self.edge.page_sourceclass Sift:"筛选信息"def __init__(self):# 创建GetData类获取前端代码geter = GetData()   # 创建geter.take()    # 操作# 最终的前端页面数据self.over_data = geter.over_datadef take(self):# 创建xpath解析器html = etree.HTML(self.over_data)# 获取数据self.prices = html.xpath('//*[@id="J_goodsList"]/ul/li[*]/div/div[*]/strong/i/text()')self.shop = html.xpath('//*[@id="J_goodsList"]/ul/li[*]/div/div[*]/span/a/text()')self.shopping = html.xpath('//*[@id="J_goodsList"]/ul/li[*]/div/div[*]/span/a/@href')self.ping = html.xpath('/html/body/div[*]/div[*]/div[*]/div[*]/div/div[*]/ul/li[*]/div/div[*]/strong/a/text()')# 将网站链接手动加上https:for i in range(len(self.shopping)):data = 'https:'+self.shopping[i]self.shopping[i] = dataprint('数据获取成功')def sava(self):'保存'print('保存中...')# 创建数据集data = {'价格':self.prices,'店铺':self.shop,'店铺链接':self.shopping,'评论数/销量':self.ping}pd = pandas.DataFrame(data)# 写入文件pd.to_excel('JD data.xlsx',index = False)time.sleep(2)print('保存成功')

.......................................................................................................................................................... 

 flowchart LR
    A[开始] --> B[创建GetData类]
    B --> C[访问京东iPhone4s搜索页面]
    C --> D[点击微信登录]
    D --> E[等待登录10秒]
    E --> F[获取页面源代码]
    F --> G[创建Sift类]
    G --> H[解析前端页面数据]
    H --> I[获取价格信息]
    I --> J[获取店铺信息]
    J --> K[获取店铺链接]
    K --> L[获取评论数/销量]
    L --> M[保存数据为Excel]
    M --> N[结束]

.......................................................................................................................................................... 

可视化主函数:

.......................................................................................................................................................... 

import re
from wordcloud import WordCloud
import matplotlib.pyplot as plt
from collections import Counter# 模拟的TXT文件内容
with open("唐卡吊坠2.txt","r") as f:txt_data =f.read()# 清洗数据,去除特殊字符,并分词
words = re.findall(r'[\u4e00-\u9fa5]+', txt_data)  # 仅保留汉字# 统计词频
word_counts = Counter(words)# 绘制词云图
font_path = '方正仿宋简体.ttf'  # 字体路径,需要根据实际情况修改
wordcloud = WordCloud(font_path=font_path, width=800, height=400, background_color='white').generate_from_frequencies(word_counts)# 显示词云图
plt.figure(figsize=(10, 5))
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis('off')
plt.show()# 绘制柱形图
common_words = word_counts.most_common(10)
labels, values = zip(*common_words)plt.figure(figsize=(10, 5))
plt.bar(labels, values)# 设置中文字体
plt.rcParams['font.sans-serif'] = ['SimHei']  # 指定默认字体
plt.rcParams['axes.unicode_minus'] = False  # 解决保存图像时负号'-'显示为方块的问题plt.xlabel('Words')
plt.ylabel('Count')
plt.title('Top 10 Most Common Words')
plt.xticks(rotation=45)  # 旋转x轴标签,以便更好地显示
plt.show()

.......................................................................................................................................................... 

 flowchart LR
    A[开始] --> B[读取TXT文件内容]
    B --> C[清洗数据,去除特殊字符,并分词]
    C --> D[统计词频]
    D --> E[绘制词云图]
    E --> F[显示词云图]
    F --> G[获取最常见的10个词]
    G --> H[绘制柱形图]
    H --> I[显示柱形图]
    I --> J[结束]

.......................................................................................................................................................... 

运行函数:

.......................................................................................................................................................... 

import get
import lookclass Main:def __init__(self):# 获取目标数据geter = get.Sift()   # 创建get.py文件中的Sift类geter.take()geter.sava()# 进行可视化layout = look.MakePlot()layout.make()if __name__ == '__main__':Main()

.......................................................................................................................................................... 

flowchart LR
    A[开始] --> B[创建Main类]
    B --> C[创建get.py中的Sift类]
    C --> D[调用take()方法获取数据]
    D --> E[调用sava()方法保存数据]
    E --> F[创建look.py中的MakePlot类]
    F --> G[调用make()方法进行可视化]
    G --> H[结束]

...........................................................................................................................................................
总流程:

.......................................................................................................................................................... 

 获取数据:

 flowchart LR
    A[开始] --> B[创建GetData类]
    B --> C[访问京东iPhone4s搜索页面]
    C --> D[点击微信登录]
    D --> E[等待登录10秒]
    E --> F[获取页面源代码]
    F --> G[创建Sift类]
    G --> H[解析前端页面数据]
    H --> I[获取价格信息]
    I --> J[获取店铺信息]
    J --> K[获取店铺链接]
    K --> L[获取评论数/销量]
    L --> M[保存数据为Excel]
    M --> N[结束]

...........................................................................................................................................................

可视化:

...........................................................................................................................................................

 flowchart LR
    A[开始] --> B[读取TXT文件内容]
    B --> C[清洗数据,去除特殊字符,并分词]
    C --> D[统计词频]
    D --> E[绘制词云图]
    E --> F[显示词云图]
    F --> G[获取最常见的10个词]
    G --> H[绘制柱形图]
    H --> I[显示柱形图]
    I --> J[结束]

...........................................................................................................................................................

运行:

...........................................................................................................................................................

flowchart LR
    A[开始] --> B[创建Main类]
    B --> C[创建get.py中的Sift类]
    C --> D[调用take()方法获取数据]
    D --> E[调用sava()方法保存数据]
    E --> F[创建look.py中的MakePlot类]
    F --> G[调用make()方法进行可视化]
    G --> H[结束]

...........................................................................................................................................................

 Guff_hys-CSDN博客

...........................................................................................................................................................

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

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

相关文章

Project Euler_Problem 193_Few Repeated Digits_欧拉筛+容斥公式

解题思路&#xff1a;暴力搜索 代码&#xff1a; void solve() {ll i, j,k,x,y,z,p,q,u,v,l,l1;N 999966663333, NN 1024;//N 1000;double a, b, c,d;M.NT.get_prime_Euler(1000000);l M.NT.pcnt;for (i 1; i < l; i) {u M.NT.prime[i];v M.NT.prime[i 1];x u * …

消息队列RabbitMQ入门学习

目录 1.初识MQ 1.1.同步调用 1.2.异步调用 1.3.技术选型 2.RabbitMQ 2.1.收发消息 2.1.1.交换机 2.1.2.队列 2.1.3.绑定关系 2.1.4.发送消息 3.SpringAMQP 3.1WorkQueues模型 3.1.1消息接收 3.1.2测试 3.1.3.能者多劳 3.1.3.总结 3.2.交换机类型 3.3.Fanout交…

在linux上面安装xxl-job2.4.0

问题 由于预算有限&#xff0c;用不起lambda去跑定时任务&#xff0c;现在只能在EC2上面自己安装一个单机版的xxl-job了。 步骤 下载压缩包 在这个页面下载压缩包&#xff0c;并本地解压。 https://github.com/xuxueli/xxl-job/releases mysql准备 找到它默认身数据库初始…

JavaScript-2.对话框、函数、数组、Date、DOM

对话框 window对象封装了三个对话框用于与用户交互 提示框&#xff1a;alert(title);确认框&#xff1a;confirm(title);输入框&#xff1a;prompt(title); 确认框 包含两个按钮“确认”/“取消”&#xff0c;点击确定时&#xff0c;返回值为true // 确认框 var bool con…

C语言单链表详解

链表和顺序表的区别 顺序表的底层存储空间是连续的&#xff0c;链表的底层存储空间是不连续的&#xff0c;链表的每个节点需要额外的指针来指向下一个节点&#xff0c;占用更多的存储空间。 顺序表的随机访问性能好&#xff0c;时间复杂度为O(1)&#xff0c;链表的随机访问性能…

Linux系统搭建FastDFS文件服务结合内网穿透实现公网访问本地文件

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

在个人电脑上,本地部署llama2-7b大模型

文章目录 前言原理效果实现 前言 我想也许很多人都想有一个本地的ai大语言模型,当然如果能够摆脱比如openai,goole,baidu设定的语言规则,可以打破交流界限,自由交谈隐私之类的,突破规则,同时因为部署在本地也不担心被其他人知道,那最好不过了 那究竟有没有这样的模型呢? llam…

Oracle 数据库 count的优化-避免全表扫描

Oracle 数据库 count的优化-避免全表扫描 select count(*) from t1; 这句话比较简单&#xff0c;但很有玄机&#xff01;对这句话运行的理解&#xff0c;反映了你对数据库的理解深度&#xff01; 建立实验的大表他t1 SQL> conn scott/tiger 已连接。 SQL> drop table …

树莓派安装Nginx服务结合内网穿透实现无公网IP远程访问

文章目录 1. Nginx安装2. 安装cpolar3.配置域名访问Nginx4. 固定域名访问5. 配置静态站点 安装 Nginx&#xff08;发音为“engine-x”&#xff09;可以将您的树莓派变成一个强大的 Web 服务器&#xff0c;可以用于托管网站或 Web 应用程序。相比其他 Web 服务器&#xff0c;Ngi…

解决动态规划问题

文章目录 动态规划的定义动态规划的核心思想青蛙跳阶问题解法一&#xff1a;暴力递归解法二&#xff1a;带备忘录的递归解法&#xff08;自顶向下&#xff09;解法三&#xff1a;动态规划&#xff08;自底向上&#xff09; 动态规划的解题套路什么样的问题考虑使用动态规划&…

OR36 链表的回文结构

描述 对于一个链表&#xff0c;请设计一个时间复杂度为O(n),额外空间复杂度为O(1)的算法&#xff0c;判断其是否为回文结构。 给定一个链表的头指针A&#xff0c;请返回一个bool值&#xff0c;代表其是否为回文结构。保证链表长度小于等于900。 测试样例&#xff1a; 1->…

【C++成长记】C++入门 | 类和对象(中) |类的6个默认成员函数、构造函数、析构函数

&#x1f40c;博主主页&#xff1a;&#x1f40c;​倔强的大蜗牛&#x1f40c;​ &#x1f4da;专栏分类&#xff1a;C❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 目录 一、类的6个默认成员函数 二、构造函数 1、概念 2、特性 三、析构函数 1、概念 2、特性 一、…

R语言 多组堆砌图

目录 数据格式 普通绘图 添加比例 R语言 堆砌图_r语言堆砌图-CSDN博客 关键点在于数据转换步骤和数据比例计算步骤&#xff0c;然后个性化调整图。 ①data <- melt(dat, id.vars c("ID"))##根据分组变为长数据 ②#计算百分比## data2 <- ddply(data, …

【数据结构】第三节:单链表

前言 本篇要求掌握的C语言基础知识&#xff1a;指针、结构体 目录 前言 单链表 概念 对比链表和顺序表 创建链表 实现单链表 准备工作 打印链表 创建节点并初始化 尾插 二级指针的调用 尾插代码 头插 尾删 头删 查找&#xff08;返回节点&#xff09; 在指定位…

Vue笔记 2

数据代理 数据代理&#xff1a;通过一个对象代理对另一个对象中属性的操作&#xff08;读/写&#xff09; let obj{x:100} let obj2{y:200} Object.defineProperty(obj2,x,{get(){return obj.x},set(value){obj.x value} })Vue中的数据代理 Vue中的数据代理&#xff1a; 通…

Java集合(一)--Map(2)

ConcurrentHashMap与HashTable 底层实现 在JDK1.7时&#xff0c;底层采用的是分段数组&#xff0b;链表的形式&#xff0c;在JDK1.8之后&#xff0c;采用的是与HashMap相同的形式&#xff0c;数组链表/红黑树。而HashTable采用的是数组链表的形式。 如何实现线程安全 Concu…

OpenCV4.9图像金字塔

目标 在本教程中&#xff0c;您将学习如何&#xff1a; 使用 OpenCV 函数 pyrUp()和 pyrDown()对给定图像进行下采样或上采样。 理论 注意 下面的解释属于 Bradski 和 Kaehler 的 Learning OpenCV 一书。 通常&#xff0c;我们需要将图像转换为与原始图像不同的大小。为此…

spring boot 集成rocketMq + 基本使用

1. RocketMq基本概念 1. NameServer 每个NameServer结点之间是相互独立&#xff0c;彼此没有任何信息交互 启动NameServer。NameServer启动后监听端口&#xff0c;等待Broker、Producer、Consumer连接&#xff0c; 相当于一个路由控制中心。主要是用来保存topic路由信息&#…

Blender表面细分的操作

在使用Blender的过程中,刚开始创建的模型,都会比较少面,这样操作起来比较流畅,减少电脑的计算量,当设计快要完成时,就会增加表面细分,这样更加圆滑,看起来更加顺眼。 比如创建一个猴头,它会默认显示如下: 从上图可以看到,有一些表面会比较大,棱角很多。 这时候你…

微商商城源码小程序好用么?

商城APP作为电子商务行业的重要组成部分&#xff0c;已经成为了人们购物的主要方式之一。为了在竞争激烈的市场中脱颖而出&#xff0c;开发一款专业且思考深度的商城APP方案显得尤为关键。本文将从专业性和思考深度两个方面&#xff0c;探讨商城APP的开发方案。 一、专业性的重…