教程:使用Python和Selenium爬取京东商品数据并生成饼图

大家好,今天我将带你进入一个令人兴奋的世界——网络爬虫数据可视化。你是否曾想过,如何通过编程来获取京东网站上你最喜欢的商品的信息,并将其可视化呈现出来?这可能听起来很复杂,但实际上,我们将一步步地完成这个任务,而且我将为你提供详细的教程。无需担心,即使你是一个Python的初学者,也能轻松掌握这个技能。

1. 准备工作

首先,确保你已经安装了以下依赖库:

  • time:用于添加等待时间,以确保页面加载完毕。
  • pandas:用于处理数据。
  • selenium:用于自动化浏览器操作。
  • pyecharts:用于生成饼图。

你可以使用pip来安装这些库:

pip install time pandas selenium pyecharts

2. 编写代码

我们将使用Python来编写代码,以下是完整的代码:

# -*- encoding: utf-8 -*-
import time
import pandas as pd
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from pyecharts.charts import Pie

if __name__ == "__main__":
    word = input("请输入要爬取的商品名称")
    page_size = int(input("请输入要爬取的页数"))

    # 创建一个浏览器驱动器的对象
    driver = webdriver.Edge()

    # 通过驱动器去打开京东的首页
    driver.get("https://www.jd.com")
    time.sleep(2)

    # 找到搜索框
    input_box = driver.find_element(By.ID, "key")
    input_box.send_keys(word)
    input_box.send_keys(Keys.ENTER)

    names, prices, commits, shops = [], [], [], []

    for i in range(page_size):
        # 将滚动条拖到最下面
        driver.execute_script('window.scrollTo(0,document.body.scrollHeight)')

        # 停顿3秒,等待数据刷新
        time.sleep(3)

        good_list = driver.find_elements(By.XPATH, '//*[@id="J_goodsList"]/ul/li')

        # 遍历每页所需爬取的内容
        for good in good_list:
            price = good.find_element(By.CLASS_NAME, "p-price").text,
            name = good.find_element(By.CLASS_NAME, "p-name").text,
            commit = good.find_element(By.CLASS_NAME, "p-commit").text,
            shop = good.find_element(By.CLASS_NAME, "p-shop").text

            # 将爬取的数据赋值给空列表中
            names.append(name[0])
            prices.append(price[0])
            commits.append(commit[0])
            shops.append(shop)

        driver.find_element(By.CLASS_NAME, "pn-prev").click()

        # 停顿3秒,等待数据刷新
        time.sleep(3)

    df = pd.DataFrame(
        {
            "价格": prices,
            "标题": names,
            "评论数": commits,
            "出版社": shops
        })

    df.to_excel("1.xlsx")

    # 按数量统计出前10名的数据
    sort_data = df.groupby("出版社").size().sort_values(ascending=True).head(10)

    # 进行数据处理。将数据按图表所需的格式进行融合
    data = [list(z) for z in zip(sort_data.index.tolist(),
                                 sort_data.values.tolist())]

    # 绘制饼图
    pie_chart = Pie()
    pie_chart.add(series_name="排名",
                  data_pair=data)

    pie_chart.render(path="P_render.html")

3. 如何运行

  1. 打开终端或命令提示符,进入包含你的Python文件的目录。
  2. 运行Python文件,输入要爬取的商品名称和要爬取的页数。
  3. 程序将自动打开浏览器,模拟搜索京东商品,然后将数据保存到Excel文件和生成饼图。

4. 结语

通过这篇教程,你学会了如何使用Python和Selenium自动化地爬取京东网站上的商品数据,并使用PyEcharts生成饼图进行可视化。这是一个强大的技能,可以应用于各种数据采集和分析任务。希望你能在实际项目中充分利用这些知识,创造出有价值的应用程序。

如果你有任何问题或需要进一步的帮助,请随时留言,我会尽力解答。祝你在网络爬虫和数据可视化的旅程中一帆风顺!

本文由作者 王大神 原创发布于 大神网的AI博客。

转载请注明作者:王大神

原文出处:教程:使用Python和Selenium爬取京东商品数据并生成饼图

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 2023年10月24日
下一篇 2023年10月24日

相关推荐

  • Python类型提示(type hint):如何提高代码的可维护性和可读性?

    你是否曾经为了理解一个Python项目的代码而感到困惑?是否曾经在调用第三方库的时候不清楚应该传入什么类型的参数?Python是一种动态语言,它的灵活性是它的优势之一,但有时也会导致代码难以理解和维护。在这篇文…

    2023年10月10日
    00
  • 探索Python编程:从入门到精通的完全指南

    故事时间:曾经,有一位朋友问我:“Python编程是什么?怎么学习它?我应该从哪里下载Python?有没有一些实用的代码示例?还有,有线上培训班吗?”这让我回想起了自己刚开始学习Python编程的时候,充满了好奇和渴望…

    2023年10月15日
    00
  • 2023年10月编程语言排行榜分析与解读

    在软件开发领域,编程语言的选择一直是开发者们关注的焦点之一。每年,TIOBE编程社区指数发布了关于各种编程语言的排名,反映了这些语言的流行度和趋势。2023年10月,TIOBE编程社区指数再次公布了最新的排名,让我…

    2023年10月10日
    00
  • python调用openai.api制作一个chatgpt对话机器人。

    在现代科技的快速发展下,人工智能领域的创新不断涌现,其中自然语言处理(NLP)领域的进步尤为引人注目。OpenAI作为NLP领域的领军者之一,提供了强大的API,使开发者能够轻松构建自己的自然语言处理应用。在本教程…

    2023年3月5日
    00
  • 使用Python创建带有特殊二维码的教程

    有一天,王大神在他的办公室里坐着,思考着如何将编程技能与二维码相结合,以创建一种特殊的二维码。这个特殊的二维码不仅可以存储信息,还可以嵌入一些有趣的元素。于是,他开始了一项探索之旅,想要与你分享他的…

    2023年10月14日
    00
  • 如何从PPT文件中提取文本

    在处理PPT文件时,有时我们需要将其中的文本提取出来以进行后续处理或分析。可能是需要编辑PPT中的文本,或者将其中的文字内容用于其他用途。不论你的需求是什么,本教程将向你展示如何使用Python来轻松从PPT文件中…

    2023年10月10日
    00
  • 如何使用Python自动裁剪学籍照片

    想象一下,你是一名学校管理员,每学期都需要处理大量学生的学籍照片。这些照片来自不同的来源,尺寸和质量各不相同。你需要确保这些照片都符合学校的规定尺寸,以便在学籍档案中使用。手动裁剪每张照片将是一项繁…

    2023年9月27日
    00
  • 如何在2023年使用Docker在群晖上部署应用

    开篇故事 在数字化时代,我们越来越依赖于各种应用程序来提高工作效率、娱乐和解决问题。然而,管理这些应用程序并确保它们在不同环境中稳定运行可能会变得相当复杂。在这个过程中,Docker成为了一个不可或缺的工具…

    2023年10月12日
    00
  • 本地化Markdown文件中的图片:Python助力批量操作

    在互联网时代,Markdown已经成为写作、博客、文档等多个领域的标配。它简单、高效,但有时我们会遇到一个问题:插入的图片都是网络链接,一旦这些链接失效,文章中的图片就会消失。有没有方法可以快速地将这些在线…

    2023年10月8日
    00
  • Python 依赖管理的优化:告别手动`pip freeze`

    李华是一个前端开发者,最近他决定尝试Python开发。一切都很顺利,直到他开始处理Python的依赖管理。每次他添加新的库,他都需要手动执行pip freeze并更新requirements.txt。李华很困惑:为什么Python不能像前端的n…

    2023年10月9日
    00