通过selenium抓取某东的TT购买记录并分析趋势过程解析

下面详细讲解“通过selenium抓取某东的TT购买记录并分析趋势过程解析”的完整攻略。

准备工作

在开始之前,需要做一些准备工作:

  1. 安装 Python 环境和 Selenium 库;

  2. 安装 Chrome 浏览器和对应的 Chrome Driver 驱动;

  3. 登录某东账号,并打开 TT 购买记录页面,获取该页面的网址。

完成上述准备工作之后,便可以开始抓取和分析 TT 购买记录数据了。

抓取数据

  1. 首先,打开 Chrome 浏览器,并加载某东 TT 购买记录页面。
from selenium import webdriver

driver = webdriver.Chrome()
driver.get('https://order.jd.com/center/list.action')
  1. 登录某东账号。可以手动登录或通过程序自动登录,这里以手动登录为例。

  2. 找到 TT 购买记录所在区域的 HTML 元素,通过 Selenium 库定位该元素,并将它的内容保存到本地的文件中。这里我们使用 BeautifulSoup 库对抓取到的数据进行解析和清洗。

from bs4 import BeautifulSoup

html_source = driver.page_source
soup = BeautifulSoup(html_source, 'html.parser')
tt_records = soup.find('table', {'class': 'order-tb-list'}).find_all('tr')
  1. 迭代 TT 购买记录,将数据保存到本地的 CSV 文件中。
import csv

headers = ['商品名称', '商品链接', '商品价格', '购买时间']
rows = []
for rec in tt_records:
    cols = rec.find_all('td')
    if len(cols) > 0:
        name = cols[1].find('a').text.strip()
        link = cols[1].find('a')['href']
        price = cols[4].find('span').text.strip()
        time = cols[6].text.strip()
        rows.append([name, link, price, time])

with open('tt_records.csv', mode='w', encoding='utf-8', newline='') as f:
    writer = csv.writer(f)
    writer.writerow(headers)
    for row in rows:
        writer.writerow(row)
  1. 关闭 Chrome 浏览器。
driver.quit()

分析数据

  1. 使用 pandas 库读取本地 CSV 文件,并对数据进行初步的描述性统计。
import pandas as pd

data = pd.read_csv('tt_records.csv')
print(data.head()) # 展示前 5 条数据
print(data.info()) # 展示数据的基本信息
print(data.describe()) # 展示数据的描述性统计信息
  1. 分析商品名称中的关键词,并通过词云图表达商品名称的分布情况。这里我们使用 jieba 库和 wordcloud 库实现。
import jieba
from wordcloud import WordCloud

# 使用 jieba 分词
data['商品名称'] = data['商品名称'].apply(lambda x: ' '.join(jieba.cut(str(x))))

# 生成词云
words = ' '.join(data['商品名称'].tolist())
wordcloud = WordCloud(background_color='white', font_path='MSYH.TTC').generate(words)
wordcloud.to_file('wordcloud.png') # 将词云保存到本地
  1. 对购买时间进行时间序列分析,并通过图表展示趋势。这里我们使用 pandas 库中的 resample() 函数和 matplotlib 库实现。
import matplotlib.pyplot as plt

# 将购买时间转换为时间戳
data['购买时间'] = pd.to_datetime(data['购买时间'])
data = data.set_index('购买时间')

# 按月份统计购买数量并绘制折线图
tt_count = data['商品名称'].resample('M').count()
tt_count.plot(kind='line')
plt.title('TT 购买数量变化趋势')
plt.xlabel('时间')
plt.ylabel('购买数量')
plt.savefig('tt_trend.png') # 将图表保存到本地

这样即可完成通过 Selenium 抓取某东的 TT 购买记录并分析趋势的过程。下面给出两个示例:

示例一:抓取京东的TT购买记录

from selenium import webdriver
from bs4 import BeautifulSoup
import csv

driver = webdriver.Chrome()
driver.get('https://order.jd.com/center/list.action')

# 请手动登录京东账号

html_source = driver.page_source
soup = BeautifulSoup(html_source, 'html.parser')
tt_records = soup.find('table', {'class': 'order-tb-list'}).find_all('tr')

headers = ['商品名称', '商品链接', '商品价格', '购买时间']
rows = []
for rec in tt_records:
    cols = rec.find_all('td')
    if len(cols) > 0:
        name = cols[1].find('a').text.strip()
        link = cols[1].find('a')['href']
        price = cols[4].find('span').text.strip()
        time = cols[6].text.strip()
        rows.append([name, link, price, time])

with open('tt_records.csv', mode='w', encoding='utf-8', newline='') as f:
    writer = csv.writer(f)
    writer.writerow(headers)
    for row in rows:
        writer.writerow(row)

driver.quit()

示例二:分析购买数量变化趋势

import pandas as pd
import matplotlib.pyplot as plt

data = pd.read_csv('tt_records.csv')
data['购买时间'] = pd.to_datetime(data['购买时间'])
data = data.set_index('购买时间')

tt_count = data['商品名称'].resample('M').count()
tt_count.plot(kind='line')
plt.title('TT 购买数量变化趋势')
plt.xlabel('时间')
plt.ylabel('购买数量')
plt.savefig('tt_trend.png')

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:通过selenium抓取某东的TT购买记录并分析趋势过程解析 - Python技术站

(0)
上一篇 2023年6月6日
下一篇 2023年6月6日

相关文章

  • 详解Python PIL Image.transform()方法

    下面是Python PIL库中的Image.transform()方法的详细攻略。Image.transform()方法可以对图片进行变换操作。 基本语法 Image.transform(size, method, data=None, resample=None, fill=None, fillcolor=None) 参数说明 size: 表示变换后的图片…

    python-answer 2023年3月25日
    00
  • python中时间序列数据的存储

    【问题标题】:Storage of timeseries data in pythonpython中时间序列数据的存储 【发布时间】:2023-04-01 09:36:02 【问题描述】: 我有一个从 2015 年 2 月 1 日到 2015 年 10 月 31 日期间大约 8.5k 产品的亚马逊价格数据。目前,它采用字典的形式,键为从基准日期算起的天数并将…

    Python开发 2023年4月8日
    00
  • flex中event.preventDefault()方法取消事件的默认行为

    当一个事件被触发时,在事件的传导过程中,事件会按照默认规则来进行处理,如链接默认跳转,表单默认提交等。如果我们想要取消这些默认行为,可以使用event.preventDefault()方法。 一、什么是flex? 在介绍event.preventDefault()方法取消事件默认行为之前,我们先来简单介绍一下flex布局。 flex布局可以让容器内的子元素以…

    python 2023年6月13日
    00
  • python将logging模块封装成单独模块并实现动态切换Level方式

    一、背景在Python中,logging模块是非常常用的标准库,用于实现应用的日志记录。logging模块提供了丰富的功能,可以配置logger、handler、formatter等参数,也支持多线程、多进程、日志旋转等高级需求。不过,logging模块也存在一些问题,例如默认日志级别是WARNING,不太方便打印出DEBUG和INFO级别的信息;另外,当需…

    python 2023年5月20日
    00
  • 详解Python替换一个元组中的元素

    下面是Python程序替换元组中元素的使用方法攻略。 1. 元组的基本概念 元组是Python中不可变序列的一种,以小括号()表示。元组中的元素不可修改,但可以按照索引来访问元素。 以下是一个示例元组: tup = (‘apple’, ‘banana’, ‘orange’) 2. 替换元组中的元素 要替换元组中的元素,需要先将元组转换成列表,然后再修改列表中…

    python-answer 2023年3月25日
    00
  • Python学习笔记(一)(基础入门之环境搭建)

    下面是详细的攻略: Python学习笔记(一)(基础入门之环境搭建) Python是一种高级编程语言,具有简单易学、可读性强、功能强大等特点,被广泛应用于Web开发、数据分析、人工智能等领域。本文将介绍如何在Windows和MacOS上搭建Python环境,并提供两个示例说明。 Windows环境搭建 步骤一:下载Python 首先,我们需要从Python官…

    python 2023年5月14日
    00
  • python 使用值来排序一个字典的方法

    要使用值来排序一个字典,我们需要先将字典转换为一个可排序的列表,然后按照值进行排序即可。下面是具体的步骤: 使用items()方法将字典转换为一个可迭代的键值对列表。 使用sorted()函数,指定key参数为lambda x: x[1],以便按照字典值进行排序。 将排序结果转换为字典。 下面给出两个示例说明: 示例一 假设我们有一个字典,键为字符串型的数字…

    python 2023年5月13日
    00
  • Python中struct 模块的使用教程

    1.struct 简单介绍 struct 是 Python 的内置模块, 在使用 socket 通信的时候, 大多数据的传输都是以二进制流的形式的存在, 而 struct 模块就提供了一种机制, 该机制可以将某些特定的结构体类型打包成二进制流的字符串然后再网络传输,而接收端也应该可以通过某种机制进行解包还原出原始的结构体数据 2.struct 的使用 str…

    python 2023年4月18日
    00
合作推广
合作推广
分享本页
返回顶部