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

yizhihongxing

下面详细讲解“通过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中reader的next用法

    Python中的csv模块是处理CSV(Comma Separated Value,逗号分隔值)数据文件的常用工具。它的reader类提供了一系列方法用于逐行读取CSV文件中的数据。其中,next()方法可以读取并返回文件的下一行数据,返回值为一个列表,列表中包含了该行数据的各个字段。 下面是next()方法的基本使用方式: import csv # 打开C…

    python 2023年6月3日
    00
  • 使用python实现学生信息管理系统

    下面是使用Python实现学生信息管理系统的完整攻略: 构思 在开始编写代码之前,我们需要先明确这个学生信息管理系统要实现哪些功能。可以考虑以下几个方面: 添加学生信息 查询学生信息 修改学生信息 删除学生信息 每个学生的信息可能包括姓名、性别、年龄、班级、学号等等。 设计数据结构 在明确功能后,我们需要根据这些需求设计相应的数据结构。可以考虑使用一个列表来…

    python 2023年5月30日
    00
  • python beautiful soup库入门安装教程

    Python BeautifulSoup库入门安装教程 BeautifulSoup是Python中一个非常流行的HTML和XML解析库,可以帮助我们更方便地解析网页。本文将介绍如何安装BeautifulSoup,并提供两个示例。 安装BeautifulSoup 在使用BeautifulSoup之前,需要安装它。以下是一个示例代码,演示如何使用pip安装Bea…

    python 2023年5月15日
    00
  • python学习之whl文件解释与安装详解

    当我们需要在Python中使用第三方的模块或库时,通常会使用pip命令来安装,但是有时候在安装过程中会遇到一些问题,因为某些库的依赖库并不是很容易安装,或者Python版本不对等原因,此时就需要使用whl文件来解决这些问题。 什么是whl文件? whl文件是Python的一种安装包格式,全名是wheel,为了方便Python程序在不同的机器上或者不同的Pyt…

    python 2023年6月3日
    00
  • Python字典创建 遍历 添加等实用基础操作技巧

    当涉及到存储键值对数据的时候,Python字典是一个非常实用的数据结构。在本文中,我将详细讲解Python字典的创建、遍历和添加等实用基础操作技巧。 创建字典 创建字典的方式之一是使用花括号{}。以下是创建一个字典的示例代码: my_dict = {‘apple’: 1, ‘banana’: 2, ‘orange’: 3} 在这个示例中,字典包含3个键值对,…

    python 2023年5月13日
    00
  • Python字符串本身作为bytes进行解码的问题

    Python中字符串和bytes类型是两种不同的数据类型,在处理编码和解码时需要注意相互转换。本文讲述字符串本身作为bytes进行解码的问题的完整攻略。 什么是字符串本身作为bytes进行解码的问题? 在Python中,字符串是unicode编码的,容易与bytes类型混淆。当我们使用错误的方式将字符串直接作为bytes进行解码时,就会出现错误的结果,例如乱…

    python 2023年5月18日
    00
  • 使用python编写一个语音朗读闹钟功能的示例代码

    编写语音朗读闹钟的示例代码需要以下步骤: 步骤一:安装必要的库 首先,需要安装Python的pygame和pyttsx3库(注意pyttsx3库需要安装Microsoft Visual C++ 14.0),在命令行中输入以下命令安装: pip install pygame pyttsx3 步骤二:编写基本框架 接下来,我们来编写一个基本的框架,包括导入所需的…

    python 2023年5月19日
    00
  • 详解Python 定义自己的异常类

    Python中用户可以定义自己的异常类,并使用raise语句在满足一定条件时抛出自定义异常。以下是定义自己的异常类的详细步骤: 定义异常类 自定义异常类应该继承自内建的Exception类,示例如下: class MyException(Exception): pass 抛出异常 可以使用raise语句抛出自定义异常,示例如下: def my_functio…

    python-answer 2023年3月25日
    00
合作推广
合作推广
分享本页
返回顶部