首页 > 编程语言 >python爬取京东商品信息与可视化

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

时间:2024-04-10 15:04:21浏览次数:27  
标签:商品信息 python ....................................................................

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

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

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

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

效果展示:

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

 

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

价格与店铺可视化:

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

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

销量与店铺可视化:

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

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

 爬取主函数:

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

import selenium.webdriver as driver
from selenium.webdriver.common.by import By
import time
from lxml import etree
import pandas

class 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_source

class Sift:
    "筛选信息"
    def __init__(self):
        # 创建GetData类获取前端代码
        geter = GetData()   # 创建
        geter.take()    # 操作
        # 最终的前端页面数据
        self.over_data = geter.over_data

    def 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] = data
        print('数据获取成功')
    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 look

class 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博客

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

标签:商品信息,python,....................................................................
From: https://blog.csdn.net/HYSliuliuliu/article/details/137535850

相关文章

  • Python数据分析大作业(ARIMA 自回归积分滑动平均模型) 2000+字 图文分析文档 疫情分析
    资源地址:Python数据分析大作业2000+字图文分析文档疫情分析+完整python代码数据分析数据来自法国疫情数据时间序列是由四种因素组成的:长期趋势、季节变动、循环变动、随机波动。当我们对一个时间序列进行预测时,应该考虑将上述四种因素从时间序列中分解出来。分解之......
  • 使用Python+selenium+pytest+allure 编写ui自动化
    一、1.1背景:每次新发布功能后都需要手动跑冒烟用例,重复点击太多,消耗人力资源1.2测试项目:飞书第三方isv应用1.3技术栈:Python+Selenium+Pytest+Allure1.4框架设计:使用PageObject设计模式,将页面的元素和元素之间的操作方法进行分离。它有三层架构,分别为:基础封装层BasePage,PO页面......
  • 干货!Python 异常处理
    python提供了两个非常重要的功能来处理python程序在运行中出现的异常和错误。python标准异常异常名称描述BaseException所有异常的基类SystemExit解释器请求退出KeyboardInterrupt用户中断执行(通常是输入^C)Exception常规错误的基类Stop......
  • Python兼职要点,搞副业不踩坑!
    程序开发领域有这样一句话:人生苦短,我用Python。这本是开发者大佬BruceEckel的金句:Lifeisshort,youneedPython,有趣的是,很多人并非专职程序员,但却把这句话奉为神谕。所以Python究竟有什么神力,让全世界的人都追捧?我认为Python能大受欢迎,就是因为它可能是最容易学会、......
  • Python 一骑绝尘,Go 进入 TOP 10 | TIOBE 3 月榜单发布
    近日,3月TIOBE编程语言榜单已最新出炉,一起来看看本月有什么值得关注的新变化吧!1、Python可谓“一骑绝尘”与前几个月相比,本月的Python可谓“一骑绝尘”——哪怕与第二名的C语言(11.17%)比较,其市场份额(15.63%)都领先了近4.5%。得益于过去一年AI热潮席卷全球,被许多人......
  • Python生成excel文件的三种方式
    在我们做平常工作中都会遇到操作excel,那么今天写一篇,如何通过python操作excel。当然python操作excel的库有很多,比如pandas,xlwt/xlrd,openpyxl等,每个库都有不同的区别,具体的区别,大家一起来看看吧~xlwt/xlrdxlrd是对于Excel进行读取,xlrd操作的是xls/xlxs格式的excelxlwt......
  • 10个极简Python代码
    1、列表重复元素判定以下方法可以检查给定列表是不是存在重复元素,它会使用set()函数来移除所有重复元素。2、字符元素组成判定检查两个字符串的组成元素是不是一样的。3、内存占用4、字节占用下面的代码块可以检查字符串占用的字节数。5、打印N次字符串该......
  • python random 模块
    random说明生成伪随机数。不应将此模块的伪随机生成器用于安全目的。有关安全性或加密用途,应使用secrets模块。设置随机数种子seed(a=None, version=2)初始化随机数生成器。如果使用相同的种子,将会生成相同的随机数序列。importrandomrandom.seed(23)print(random.r......
  • python 会员信息管理系统2.0
    问题介绍综合案例实现:会员管理系统设计与实现-V3利用所学习的知识点 ,结合会员管理系统的分析与实现, 了解面向对象开发过程中类内部功能的分析方法,系统讲解 Python语法、控制结构、四种典型序列 ,函数定义以及面向对象语法和模块的应用。(使用面向对象的思想)面向对象编......
  • 零基础入门学习Python第一阶
    01初识PythonPython简介Python的历史1.1989年圣诞节:GuidovonRossum开始写Python语言的编译器。2.1991年2月:第一个Python编译器(同时也是解释器)诞生,它是用C语言实现的(后面),可以调用C语言的库函数。在最早的版本中,Python已经提供了对“类”,“函数”,“异常处理”等构造块的......