爬取jd销量最高的商品名称和评论数

该博客介绍了如何爬取京东网站上销量最高的商品名称及其对应的评论数量,通过详细步骤和代码实例,展示了网络爬虫在电商数据分析中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考博客:

https://blog.youkuaiyun.com/menghuannvxia/article/details/51333689

代码:

import requests
import re
from urllib.parse import quote
from lxml import etree
import sys


def get_jd_data(keyword):
    keyword = quote(keyword)  #解码中文
    url = "https://search.jd.com/Search?keyword={}&enc=utf-8&qrst=1&rt=1&stop=1&vt=2&bs=1&wq={}&stock=1&psort=3&click=0".format(keyword,keyword)
    # print(url)
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:65.0) Gecko/20100101 Firefox/65.0',
        'Cookie':'__jda=122270672.1551510490895255034850.1551510491.1551510491.1551510491.1; __jdb=122270672.12.1551510490895255034850|1.1551510491; __jdc=122270672; __jdv=122270672|direct|-|none|-|1551510490916; __jdu=1551510490895255034850; ipLoc-djd=1-72-2799-0; shshshfp=f21d0cc732d79f86048c96127c37924b; shshshfpa=20192d5f-27f0-cfdd-6be7-6b8564d8956b-1551510516; shshshsID=48476bb6cedc7b2515036bd5adb494f7_9_1551511402939; shshshfpb=fWfTtVViJK0Phfe8j4vlqfw%3D%3D; PCSYCityID=2; 3AB9D23F7A4B3C9B=4QG3GNC2A4EH3Q5AOYTTJ6N644PJZZWSXEJVD5A4FHRPXFN2KSIQJ4WRIICWOY2ON4UV2A2HXWCWHZGYSVUGDSBT64',
        'Refer':'https://www.jd.com/'
    }
    respose = requests.get(url=url,headers=headers).content.decode(encoding='utf-8')  #获取整个页面
    # print(respose)

    #解析页面内容
    tree = etree.HTML(respose)
    # 获取评价数目
    comment_list_url = tree.xpath(".//li[@class='gl-item']//div[@class='p-commit']//a/@id")
    sku_url_of_topthree = comment_list_url[:3]  # 获取商品编号
    #获取销量前三商品3的编号
    ids = []
    for j in range(3):
        #获取编号的数字部分
        url_sku = sku_url_of_topthree[j]
        id = ""
        for i in range(len(list(url_sku))):
            if i >= 10:
                id += list(url_sku)[i]
        ids.append(id)
    # print(ids)

    #*********************************************分隔符*************************************************

    result_jddata = []    #最终返回结果


    #获取商品名称
    for k in range(3):
        name_list = []
        url_sku_forname = 'https://item.jd.com/{}.html'.format(ids[k])
        re_forname = requests.get(url=url_sku_forname,headers=headers).content.decode('gbk','ignore')
        tree_forname = etree.HTML(re_forname)
        name = tree_forname.xpath("//div[@class='sku-name']/text()")
        #去掉商品名称中的换行空格
        name_sku = ''
        for na in name:
            if na != '/n' :
                name_sku += na.strip()
        # print(name_sku)
        name_list.append(name_sku)
        result_jddata.append(name_list)
    # print(result_jddata)

    # *******************************分隔符******************************************

    # 获取评论数量
    for j in range(3):
        url_sku_forcommt = 'http://club.jd.com/productpage/p-{}-s-0-t-3-p-0.html'.format(ids[j])
        res_sku = requests.get(url=url_sku_forcommt,headers=headers).content.decode('gbk','ignore')
        # print(res_sku)
        comment_number = re.findall('commentCountStr":"(.*?)","',res_sku )[0]
        result_jddata[j].append(comment_number)

    print(result_jddata)
    return result_jddata
    pass

if __name__ == '__main__':
    keyword = '茶'
    result = get_jd_data(keyword)
    pass



### 使用Python爬虫抓取京东商品销量据的方法 对于从京东平台获取商品销量据的任务,可以采用Selenium库来模拟浏览器行为加载页面并提取所需信息[^1]。由于电商平台通常会动态加载内容,并且可能对频繁访问采取防护措施,因此除了基本的HTTP请求外还需要处理JavaScript渲染后的网页。 为了实现这一目标,下面是一个简单的例子展示怎样设置环境以及编写基础脚本: #### 安装必要的软件包 首先确保安装了所需的Python库: ```bash pip install selenium pandas requests ``` 接着下载对应版本的WebDriver(例如ChromeDriver),并将它放置于系统的PATH路径下或者指定位置。 #### 编写Python代码 创建一个新的Python文件用于开发爬虫程序,在这里定义了一个函`get_sales_data()`用来获取特定URL的商品销售量信息。 ```python from selenium import webdriver import time import pandas as pd def get_sales_data(url): options = webdriver.ChromeOptions() options.add_argument('headless') # 设置无界面模式 driver = webdriver.Chrome(options=options) try: driver.get(url) # 等待页面完全加载完成 time.sleep(5) elements = driver.find_elements_by_class_name("p-commit") sales_list = [] for element in elements: text = element.text.strip().split()[0].replace("+", "") if '万' in text: num = float(text.replace('万', '')) * 10000 else: num = int(text) sales_list.append(num) df = pd.DataFrame({'Sales': sales_list}) return df finally: driver.quit() if __name__ == "__main__": url = "https://item.jd.com/your_product_id.html" result_df = get_sales_data(url) print(result_df.describe()) ``` 上述代码片段展示了如何利用Selenium自动化工具打开给定链接地址对应的详情页,并从中解析出评价量作为近似销量指标[^2]。需要注意的是实际应用时应调整XPath表达式或CSS选择器以适应具体网站结构变化;同时考虑到法律风险道德责任,请务必遵循各站点的服务条款与隐私政策规定。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值