大家好,今天我将带你进入一个令人兴奋的世界——网络爬虫与数据可视化。你是否曾想过,如何通过编程来获取京东网站上你最喜欢的商品的信息,并将其可视化呈现出来?这可能听起来很复杂,但实际上,我们将一步步地完成这个任务,而且我将为你提供详细的教程。无需担心,即使你是一个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. 如何运行
- 打开终端或命令提示符,进入包含你的Python文件的目录。
- 运行Python文件,输入要爬取的商品名称和要爬取的页数。
- 程序将自动打开浏览器,模拟搜索京东商品,然后将数据保存到Excel文件和生成饼图。
4. 结语
通过这篇教程,你学会了如何使用Python和Selenium自动化地爬取京东网站上的商品数据,并使用PyEcharts生成饼图进行可视化。这是一个强大的技能,可以应用于各种数据采集和分析任务。希望你能在实际项目中充分利用这些知识,创造出有价值的应用程序。
如果你有任何问题或需要进一步的帮助,请随时留言,我会尽力解答。祝你在网络爬虫和数据可视化的旅程中一帆风顺!