教程:使用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生成饼图进行可视化。这是一个强大的技能,可以应用于各种数据采集和分析任务。希望你能在实际项目中充分利用这些知识,创造出有价值的应用程序。

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

声明:本站所有文章,如无特殊说明或标注,均为本站(王大神)原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

给TA打赏
共{{data.count}}人
人已打赏
指数词

如何使用牛顿-拉弗森法求浮点数的倒数

2023-10-24 22:15:11

指数词

教程:使用Python爬取抖音用户的视频

2023-10-24 22:18:20

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索