用Python爬取618当天某东热门商品销量数据,看看大家喜欢什么!

下面会详细讲解使用Python爬取618当天某东热门商品销量数据的完整攻略。

环境准备

在开始之前,我们需要准备以下环境:

  • Python 3.x
  • PyCharm等IDE(可选)
  • Python第三方库requests、BeautifulSoup、pandas

其中requests用于请求数据,BeautifulSoup用于解析HTML页面,pandas用于存储数据。我们可以通过pip命令安装这些库:

pip install requests
pip install beautifulsoup4
pip install pandas

获取页面数据

首先,我们可以通过浏览器访问某东618活动页面,观察页面结构和URL规律。可以发现,每个商品的销量数据都在这样的URL中:https://c0.3.cn/stock?skuId={}&area=1_72_4137_0&venderId=1000000127&cat=1319,1525,7050&buyNum=1&choseSuitSkuIds=&extraParam={{"originid":"1"}}

这里的skuIdvenderId可以在商品页面的URL中找到,area则表示地区编号,这里选择的是北京地区的编号。我们可以使用requests库请求数据,将skuIdvenderId参数填入URL中,然后发起请求:

import requests

def get_sales(sku_id, vender_id):
    url_sku = 'https://c0.3.cn/stock?skuId={}&area=1_72_4137_0&venderId={}&cat=1319,1525,7050&buyNum=1&choseSuitSkuIds=&extraParam={{"originid":"1"}}'.format(sku_id, vender_id)
    r_sku = requests.get(url_sku)
    data_sku = r_sku.json()
    sales = data_sku['stock']['skuCore']['sku2info'][sku_id]['销售状态']['joinCount']
    return sales

这段代码中,我们使用了requests库的get方法请求了URL,将返回的json数据传给了data_sku变量。接着,我们从json数据中解析出销量数据,并返回它。

解析HTML页面

我们需要在活动页面中解析出商品的ID和销量数据。使用开发者工具观察活动页面结构,可以发现每个商品都被包含在一个<div>元素中,而且它们的类名都是item

我们可以使用BeautifulSoup库来解析HTML页面,然后使用列表推导式依次获取每个商品的ID和销量数据。以下是示例代码:

from bs4 import BeautifulSoup

def get_product_sales(soup):
    item_list = soup.find_all('div', {'class': 'item'})
    info_list = [(item.find('div', {'class': 'p-name'}).a['href'], item.find('div', {'class': 'p-name'}).a.text.strip(), get_sales(item['data-sku'], item['data-venderid'])) for item in item_list]
    return info_list

这段代码中,我们使用了find_all方法获取了所有的商品元素,然后使用find方法获取商品页面URL和名称,最后将data-skudata-venderid传给前面的get_sales函数,获取销量数据。最后将商品ID、名称和销量数据封装为元组,存储到一个列表中。

存储数据

获取销量数据后,我们还需要将它们存储到文件中。这里我们使用pandas库来处理数据,先将数据存储到DataFrame中,然后将DataFrame写入文件。以下是示例代码:

import pandas as pd

def save_data(info_list, filename):
    df = pd.DataFrame(info_list, columns=['url', 'name', 'sales'])
    df.to_csv(filename, index=False)

这里我们使用了DataFrame的构造方法将数据存储到DataFrame中,并设置了列名。然后使用to_csv方法将DataFrame写入文件中。

完整代码

下面是完整的代码示例:

import requests
from bs4 import BeautifulSoup
import pandas as pd

def get_sales(sku_id, vender_id):
    url_sku = 'https://c0.3.cn/stock?skuId={}&area=1_72_4137_0&venderId={}&cat=1319,1525,7050&buyNum=1&choseSuitSkuIds=&extraParam={{"originid":"1"}}'.format(sku_id, vender_id)
    r_sku = requests.get(url_sku)
    data_sku = r_sku.json()
    sales = data_sku['stock']['skuCore']['sku2info'][sku_id]['销售状态']['joinCount']
    return sales

def get_product_sales(soup):
    item_list = soup.find_all('div', {'class': 'item'})
    info_list = [(item.find('div', {'class': 'p-name'}).a['href'], item.find('div', {'class': 'p-name'}).a.text.strip(), get_sales(item['data-sku'], item['data-venderid'])) for item in item_list]
    return info_list

def save_data(info_list, filename):
    df = pd.DataFrame(info_list, columns=['url', 'name', 'sales'])
    df.to_csv(filename, index=False)

if __name__ == '__main__':
    url = 'https://sale.jd.com/act/iFtgYFy7YjMyx.html'
    r = requests.get(url)
    soup = BeautifulSoup(r.text, 'html.parser')
    info_list = get_product_sales(soup)
    save_data(info_list, 'sales.csv')

这段代码中,我们首先使用requests库请求了活动页面,然后使用BeautifulSoup库解析页面数据,调用get_product_sales函数获取销量数据,最后使用save_data函数存储数据到文件中。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:用Python爬取618当天某东热门商品销量数据,看看大家喜欢什么! - Python技术站

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

相关文章

  • Python字符串特性及常用字符串方法的简单笔记

    Python字符串特性及常用字符串方法的简单笔记 1. 字符串特性 Python的字符串是一种序列类型,可以用单引号(”)或双引号(””)来表示。例如: a = ‘Hello World!’ b = "Python is fun!" Python的字符串也可以用三引号(”’ 或 “””) 来表示多行字符串。例如: c = ”’Hel…

    python 2023年5月31日
    00
  • python:解析requests返回的response(json格式)说明

    在Python中,可以使用requests模块发送HTTP请求,并获取响应。当响应的内容为JSON格式时,需要对响应进行解析。以下是Python解析requests返回的response(JSON格式)的详细攻略: 获取响应内容 要获取响应内容,可以使用response.text或response.content属性。以下是获取响应内容的示例: import…

    python 2023年5月14日
    00
  • 模拟 requests.post 和 requests.json 解码器 python

    【问题标题】:Mocking requests.post and requests.json decoder python模拟 requests.post 和 requests.json 解码器 python 【发布时间】:2023-04-03 12:50:01 【问题描述】: 我正在为我的模块创建一个使用请求库的测试套件。但是,我正在尝试为特定请求模拟几个…

    Python开发 2023年4月8日
    00
  • pandas使用get_dummies进行one-hot编码的方法

    当我们在对一些具有分类属性的数据进行分析时,常常需要将这些分类数据进行one-hot编码,以便在后续的数据分析中更加方便。Pandas中通过get_dummies()函数可以非常方便地对数据进行one-hot编码。 基本语法 Pandas中的get_dummies()语法如下: pandas.get_dummies(data, prefix=None, pr…

    python 2023年5月31日
    00
  • Python数据类型详解(三)元祖:tuple

    Python数据类型详解(三)元组:tuple 什么是元组? 元组(tuple)与列表类似,也是一种序列,但是元组是不可变的(immutable),即一旦创建后就不能再被修改。元组可以包含多个不同类型的元素,被包含的元素之间以逗号分隔,同时还可以使用小括号来包含元素。 如何创建元组? 创建元组的语法与列表类似,使用小括号将元素括起来,并用逗号分隔。例如: m…

    python 2023年5月14日
    00
  • python基础详解之if循环语句

    Python基础详解之 if 循环语句 在Python中,if语句是一种条件语句,它允许程序根据某个条件的真假结果执行不同的代码块。在本文中,我们将讨论Python中if语句的语法、用法、示例以及与其他语句的关系。 语法 Python中的if语句的语法如下: if condition: # 代码块1 else: # 代码块2 其中,if、else关键字是必须…

    python 2023年6月5日
    00
  • python requests指定出口ip的例子

    在进行爬虫开发时,我们可能需要使用Python的requests库来爬取网站数据。有时候,我们需要指定出口IP来避免被封禁或者限制。本文将介绍如何使用Python requests库指定出口IP,并提供两个示例。 实现步骤 步骤一:安装requests库和fake_useragent库 在Python中,我们可以使用pip命令安装requests库和fake…

    python 2023年5月15日
    00
  • python游戏开发的五个案例分享

    Python游戏开发的五个案例分享 在本文中,我们将分享五个Python游戏开发案例,并提供详细的攻略和说明,帮助初学者快速入门。 1. 2048游戏 2048游戏是一个非常流行的数字游戏,在这个游戏中,你需要将数字方块合并到一个2048的方块中。这个游戏是使用Python和Pygame库来设计的,Pygame是一个Python游戏开发库,它可以让开发者轻松…

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