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.mzph.cn/news/814178.shtml

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

相关文章

数据库系统概论(超详解!!!)第四节 数据库安全性

问题的提出: 数据库的一大特点是数据可以共享 数据共享必然带来数据库的安全性问题 数据库系统中的数据共享不能是无条件的共享。 1.数据库的安全概述 数据库的安全性是指保护数据库以防止不合法使用所造成的数据泄露、更改或破坏 。 系统安全保护措施是否有效…

C语言:约瑟夫环问题详解

前言 哈喽,宝子们!本期为大家带来一道C语言循环链表的经典算法题(约瑟夫环)。 目录 1.什么是约瑟夫环2.解决方案思路3.创建链表头结点4.创建循环链表5.删除链表6.完整代码实现 1.什么是约瑟夫环 据说著名历史学家Josephus有过以下…

C/C++基础----判断和循环

判断 if-elseif-else判断 语句&#xff1a; 条件使用之前的逻辑运算符或者关系运算符 if(条件1){条件1成立时内容 }else if(条件2){条件2成立时内容 }else{所有条件不成立时内容 }#include <iostream>using namespace std;int main() {int age 10;if (age > 18) {c…

【C Hash Map from Redis】

将Redis源码中的哈希表底层逻辑提取&#xff0c;并进行最小demo级测试将对应文件抽出&#xff0c;通过宏替换等方式保证源码编译通过main.c编写测试demo &#xff0c;注册哈希函数和值比较函数&#xff08;必选项&#xff09; /* Hash Tables Implementation.** This file imp…

Java 原生代码获取服务器的网卡 Mac 地址、CPU序列号、主板序列号

1、概述 Java 可以获取服务器的网卡 Mac 地址、CPU 序列号、主板序列号等信息&#xff0c;用来做一些软件授权验证、设备管理等场景。 2、代码实现 package com.study.util;import java.net.InetAddress; import java.net.NetworkInterface; import java.util.Scanner;/*** …

elasticsearch7安全配置--最低安全等级,用户名密码

上一篇博客在centos7上安装了elasticsearch7 接下来对elasticsearch进行安全方面的配置 minimal security 最低安全等级&#xff0c;用户名密码 首先开启xpack vim config/elasticsearch.yml xpack.security.enabled: true由于我是单机配置的&#xff0c;还加了如下配置 d…

SAP HCM GET pernr无法获取到数据二

今天遇到一个比较奇怪的问题&#xff0c;PA30能查到员工主数据&#xff0c;任何信息类型也没有错误&#xff0c;但是核算工资的时候发现无法找到此人。 但是核算工资无法核算 断点到逻辑数据get pernr&#xff0c;也不会进入断点 查看0000数据有间隔 具体错误的代码位置如下&am…

从 iPhone 上的短信中恢复已删除的图片的可靠方法

您可能在浏览消息聊天时不小心删除了一些文本和照片。事实上&#xff0c;如果这些消息对你来说意义重大&#xff0c;那对你来说可能会很麻烦。当发生意外情况时&#xff0c;您可能不想恢复整个聊天&#xff0c;而是恢复其中的附件。 好了&#xff0c;这篇文章主要是讲如何灵活…

Towards Street-Level Client-Independent IP Geolocation(2011年)(第二部分)

被引次数:306 Wang Y, Burgener D, Flores M, et al. Towards {Street-Level}{Client-Independent}{IP} Geolocation[C]//8th USENIX Symposium on Networked Systems Design and Implementation (NSDI 11). 2011. 接着Towards Street-Level Client-Independent IP Geolocati…

【数据恢复软件】:Magnet AXIOM V8.0

Magnet AXIOM V8.0重大更新 1、全新的UI设计 2、更快的相应速度 3、补全工件分析 4、支持亚马逊AWS云数据&#xff08; 获取同一帐户或安全帐户上下文中的快照。 支持Windows实例、加密卷和超过1 TB的卷、具有多个卷的实例等等&#xff01; &#xff09; 5、Bug修复 6、AI支持…

AI虽强,搜索引擎仍不可或缺

AI 领域正以前所未有的速度发展&#xff0c;大模型的发布变得愈发频繁&#xff0c;模型的规模也在持续扩大。如今&#xff0c;大模型的起点已经攀升至数十亿参数&#xff08;数十 B&#xff0c;B 是 Billion 的简写&#xff0c;10 亿&#xff09;&#xff0c;其功能之广泛&…

从零实现诗词GPT大模型:数据集介绍和预处理

本章将介绍该系列文章中使用的数据集&#xff0c;并且编写预处理代码&#xff0c;处理成咱们需要的格式。 一、数据集介绍 咱们使用的数据集名称是chinese-poetry&#xff0c;是一个在github上开源的中文诗词数据集&#xff0c;根据仓库中readme.md中的介绍&#xff0c;该数据…

使用阿里云试用Elasticsearch学习:使用内置模型 lang_ident_model_1 创建管道并使用

文档&#xff1a;https://www.elastic.co/guide/en/machine-learning/current/ml-nlp-deploy-model.html 部署刚刚下载好的内置模型 部署内存不够用 还得花钱&#xff0c;拉几把倒吧。就用自带的吧。 测试模型 POST _ml/trained_models/lang_ident_model_1/_infer {"doc…

错题记录-华为海思

华为 海思数字芯片 参考 &#xff1a;FPGA开发/数字IC笔试系列(5) 华为海思IC笔试解析 FPGA开发/数字IC笔试系列(6) 华为海思IC笔试解析 SystemVerilog Function与Task的区别 $readmemh与$readmemb这两个系统任务是用来从指定文件中读取数据到寄存器数组或者RAM、ROM中。除了…

IP地址修改步骤详解

IP地址是网络设备在网络中的标识&#xff0c;它决定了设备在网络中的位置与可访问性。然而&#xff0c;在某些情况下&#xff0c;我们可能需要修改IP地址&#xff0c;以满足特定的网络需求或解决网络问题。虎观代理将详细介绍IP地址的修改步骤&#xff0c;帮助读者更好地理解和…

HarmonyOS4-学习入门知识总结

简单的组件学习&#xff1a; /*** weip 自定义控件* 自定义构建函数也是需要充电的地方&#xff0c;分全局和局部的* 全局&#xff1a;需要添加function关键字 局部&#xff1a;不加function关键字* Styles function 自定义公共样式 分全局和局部* Extends(Text) 继承模式 只…

150个 HTML5 网站模版 量大慢选

HTML5 网站模版 No.1 HTML5 网站模版 No.1

计算机网络之同轴电缆,集线器,网桥,交换机,路由器

ping的过程 两台主机用交叉线连接&#xff0c;通过88.2ping88.3发现底层是先经过广播&#xff0c;通过arp协议&#xff0c;告诉我要找的ip是88.3,然后88.3主机收到后就把自己的mac地址发送回去&#xff0c;同理88.2发现是发给自己的后就进行接收&#xff0c;有了mac地址然后再通…

分类预测 | Matlab实现基于迁移学习和GASF-CNN-Mutilhead-Attention格拉姆角场和卷积网络多头注意力机制多特征分类预测/故障识别

分类预测 | Matlab实现基于迁移学习和GASF-CNN-Mutilhead-Attention格拉姆角场和卷积网络多头注意力机制多特征分类预测/故障识别 目录 分类预测 | Matlab实现基于迁移学习和GASF-CNN-Mutilhead-Attention格拉姆角场和卷积网络多头注意力机制多特征分类预测/故障识别分类效果基…

字体体积压缩

环境:python3 关键步骤: pip install fontTools目录详情: 执行 pyftsubset.exe SourceHanSansCN-Medium.ttf --text-file3500.txt然后打开:TTF To Woff2,选择文件上传,等待处理,下载,使用 附常用汉字,字体文件请善用百度 3500.txt 工才下寸丈大与万上小口山巾千乞川亿个…