通过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日

相关文章

  • Nodejs中调用系统命令、Shell脚本和Python脚本的方法和实例

    调用系统命令、Shell脚本和Python脚本是Nodejs中很常见的操作之一,以下是具体的方法和实例。 调用系统命令 Nodejs中调用系统命令可以使用child_process模块的exec()方法,在回调函数中获取到命令执行后的返回值。 const exec = require(‘child_process’).exec; exec(‘ls -al’,…

    python 2023年6月3日
    00
  • 详解python:time模块用法

    详解Python:time模块用法 简介 Python中的time模块是处理时间的模块。它提供了获取时间、时间格式化、睡眠等功能。在本文中,我们将详细讲解time模块的用法,包括获取当前时间、获取时间戳、时间格式化、时间周期、睡眠等内容。 函数和属性 以下是time模块提供的常用函数和属性: time.altzone:返回格林威治西部夏令时(DST)的偏移秒…

    python 2023年6月2日
    00
  • Python容器类型转换的3种方法实例

    Python 中有很多种容器类型,例如列表(list)、元组(tuple)、字典(dict)等。有时候我们需要将一种容器类型转换成另一种容器类型。为了帮助大家更好地理解 Python 容器类型的转换,本文将为大家介绍 3 种常见的容器类型转换方法。 1. 字符串转列表 如果我们要将一个以空格分隔的字符串转换为一个列表,可以使用字符串的 split() 方法和…

    python 2023年5月14日
    00
  • Windows系统配置python脚本开机启动的3种方法分享

    下面是关于 “Windows系统配置python脚本开机启动的3种方法分享”的详细攻略。 方法一:使用Windows任务计划程序 Windows任务计划程序是在指定的时间自动运行指定任务的Windows内置功能。通过它,我们可以在开机或某个特定时间点运行python脚本。步骤如下: 打开任务计划程序,可以通过在Windows搜索栏,输入“任务计划程序”找到它…

    python 2023年5月19日
    00
  • Python中解析JSON并同时进行自定义编码处理实例

    下面是关于Python中解析JSON并同时进行自定义编码处理的完整攻略。 什么是JSON JSON是JavaScript对象表示法的缩写,是一种轻量级的数据交换格式。与XML类似,JSON也是一种纯文本格式,可以方便地在各种编程语言之间传递数据。目前,在Web应用中,JSON已经远远超过XML的使用量。 Python中解析JSON Python内置的json…

    python 2023年6月3日
    00
  • Python文字截图识别OCR工具实例解析

    Python文字截图识别OCR工具实例解析 OCR(Optical Character Recognition)是一种将图像中的文字转换为可编辑文本的技术。在Python中,我们可以使用Tesseract OCR库来实现文字识别。本文将详细讲解如何使用Python实现文字截图识别OCR工具,包括如何安装Tesseract OCR库、如何截图、如何识别文字等内…

    python 2023年5月15日
    00
  • Python按天实现生成时间范围序列的方法详解

    Python按天实现生成时间范围序列的方法详解 在Python中,如何实现按天生成一段时间范围内的时间序列呢?本文将介绍两种常见的方法,以满足大家的需求。 Method 1: datetime库实现 我们可以使用Python内置的datetime库生成时间序列,具体实现如下: from datetime import datetime, timedelta …

    python 2023年6月2日
    00
  • 如何获取我以编程方式声明的 Python 类的源代码?

    【问题标题】:How do I get the source for a Python class I declared programmatically?如何获取我以编程方式声明的 Python 类的源代码? 【发布时间】:2023-04-02 02:20:01 【问题描述】: 我正在尝试使用inspect.getsource() 来获取这样定义的类的源代…

    Python开发 2023年4月8日
    00
合作推广
合作推广
分享本页
返回顶部