Python 爬取淘宝指定搜索商品评论 标题 销量 计算sign

在这里插入图片描述

只需要替换原来的Cookie和token即可使用,自动计算对应链接地址的sign直接使用即可。需要注意是一个账号爬取过多会有验证码

import json
import hashlib
import random
import time

import pandas as pd
import requests

results = []


def fetch_review_list(datas, md5_hash,t):
    url = "https://h5api.m.tmall.com/h5/mtop.alibaba.review.list.for.new.pc.detail/1.0/"
    params = {
        "jsv": "2.7.2",
        "appKey": "12574478",
        "t": t,  # 使用当前时间戳
        "sign": md5_hash,  # 请替换为实际的签名值
        "api": "mtop.alibaba.review.list.for.new.pc.detail",
        "v": "1.0",
        "isSec": "0",
        "ecode": "0",
        "timeout": "20000",
        "ttid": "2022@taobao_litepc_9.17.0",
        "AntiFlood": "true",
        "AntiCreep": "true",
        "preventFallback": "true",
        "type": "jsonp",
        "dataType": "jsonp",
        "callback": "mtopjsonp6",
        "data": datas
    }
    # 设置 headers
    headers = {
        "Cookie": "自己的"
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36",
        "Referer": "https://detail.tmall.com/",
        "Accept": "*/*",
        "Connection": "keep-alive"
    }

    response = requests.get(url, params=params, headers=headers)
    print(response.text)
    json_content = json.loads(response.text.replace("mtopjsonp6(", "").replace("})", "}"))
    # 获取评论区
    counten = json_content['data']['module']['reviewVOList']
    rulist =[]
    for i in counten:
        pinglun = i['reviewWordContent']
        rulist.append(pinglun)
    return  rulist

def taobao(sign, datas, appkey, t,coci):
    # 构造 URL 和参数
    url = "https://h5api.m.taobao.com/h5/mtop.relationrecommend.wirelessrecommend.recommend/2.0/"
    params = {
        "jsv": "2.7.0",
        "appKey": appkey,
        "t": t,
        "sign": sign,
        "api": "mtop.relationrecommend.WirelessRecommend.recommend",
        "v": "2.0",
        "H5Request": "true",
        "preventFallback": "true",
        "type": "jsonp",
        "dataType": "jsonp",
        "callback": "mtopjsonp2",
        "data": datas
    }

    # 设置 headers
    headers = {
        "Cookie": coci,
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36",
        "Referer": "https://h5.m.taobao.com/",
        "Accept": "*/*",
        "Connection": "keep-alive"
    }

    # 发起请求
    response = requests.get(url, headers=headers, params=params)
    # 确保请求成功
    if response.status_code == 200:
        content = response.text.replace("mtopjsonp2(", "").replace("})", "}")

        # 检查响应内容是否为空
        if content.strip():
            # 解析JSON字符串
            try:
                json_content = json.loads(content)
                # 获取指定的JSON内容
                name = json_content['data']['itemsArray']

                for list in range(len(name)):

                    # 商品链接
                    product_url = name[list]['auctionURL']
                    pic_path = name[list]['pic_path']
                    title = name[list]['title']
                    print(title)
                    price = name[list]['priceShow']['price']
                    # 标签
                    tag = name[list]['structuredShopInfo']['infoList'][0]['text']
                    # 销量
                    sales = name[list]['realSales']
                    time.sleep(random.randint(1, 5))

                    # 获取评论区
                    # 商品id
                    pl_id = name[list]['item_id']
                    pl_token = "自己的token"
                    pl_t = str(1718204461753)
                    pl_appKey = "12574478"
                    pl_data = '{"itemId":"' + str(pl_id) + '","bizCode":"ali.china.tmall","channel":"pc_detail","pageSize":20,"pageNum":1}'
                    md5_hash = md5_encrypt(pl_token + "&" + pl_t + "&" + pl_appKey + "&" + pl_data)
                    print("获取评论区")
                    pinglunqu = fetch_review_list(pl_data, md5_hash,pl_t)

                    results.append([pl_id,product_url, pic_path, title, price, tag, sales,pinglunqu])
                    time.sleep( random.randint(1, 5))

            except json.JSONDecodeError as e:
                print(f"JSON解析错误: {e}")
            except KeyError as e:
                print(f"键错误: {e}")
            except IndexError as e:
                print(f"索引错误: {e}")
        else:
            print("响应内容为空")
    else:
        print(f"请求失败,状态码: {response.status_code}")


def md5_encrypt(data):
    """对给定的数据进行MD5加密"""
    md5_obj = hashlib.md5()
    md5_obj.update(data.encode('utf-8'))  # 确保数据是字节类型
    return md5_obj.hexdigest()  # 返回16进制格式的哈希值


if __name__ == '__main__':

    keyword = "碎花裙"
    token = "自己的token"
    t = str(int(time.time() * 1000))
    appKey = "12574478"
    coci="自己的Cookie"
    for page in range(30, 50):
        data = '{"appId":"29859","params":"{\\"isBeta\\":\\"false\\",\\"grayHair\\":\\"false\\",\\"appId\\":\\"29859\\",\\"from\\":\\"\\",\\"brand\\":\\"HUAWEI\\",\\"info\\":\\"wifi\\",\\"index\\":\\"4\\",\\"ttid\\":\\"600000@taobao_android_10.7.0\\",\\"needTabs\\":\\"true\\",\\"rainbow\\":\\"\\",\\"areaCode\\":\\"CN\\",\\"vm\\":\\"nw\\",\\"schemaType\\":\\"auction\\",\\"elderHome\\":\\"false\\",\\"device\\":\\"HMA-AL00\\",\\"isEnterSrpSearch\\":\\"true\\",\\"newSearch\\":\\"false\\",\\"network\\":\\"wifi\\",\\"subtype\\":\\"\\",\\"hasPreposeFilter\\":\\"false\\",\\"client_os\\":\\"Android\\",\\"gpsEnabled\\":\\"false\\",\\"searchDoorFrom\\":\\"srp\\",\\"debug_rerankNewOpenCard\\":\\"false\\",\\"homePageVersion\\":\\"v7\\",\\"searchElderHomeOpen\\":\\"false\\",\\"style\\":\\"wf\\",\\"page\\":' + str(
            page) + ',\\"n\\":\\"10\\",\\"q\\":\\"' + keyword + '\\",\\"search_action\\":\\"initiative\\",\\"sugg\\":\\"_4_1\\",\\"m\\":\\"h5\\",\\"sversion\\":\\"13.6\\",\\"prepositionVersion\\":\\"v2\\",\\"tab\\":\\"all\\",\\"channelSrp\\":\\"\\",\\"tagSearchKeyword\\":null,\\"sort\\":\\"_sale\\",\\"filterTag\\":\\"\\",\\"prop\\":\\"\\",\\"item_id\\":\\"\\\"}"}'
        md5_hash = md5_encrypt(token + "&" + t + "&" + appKey + "&" + data)
        print(page)
        taobao(md5_hash, data, appKey, t,coci)

    df = pd.DataFrame(results, columns=['商品id','商品链接', '图片路径', '标题', '价格', '标签', '销量','用户评论'])
    df.to_excel('淘宝1.xlsx', index=False, engine='openpyxl')

    # 根据销量高的产品来获取他们的评论

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/730733.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

张大哥笔记:5种信息差赚钱模式

从古至今,赚钱最快的路子就一个,而且从未改变,那就是信息差!在商业活动中,信息不对称现象普遍存在,如果你善于利用这些信息差的话,就可以赚到钱! 1、价格的信息差 商品价格在不同地…

【LLM-多模态】高效多模态大型语言模型综述

一、结论写在前面 模型规模的庞大及训练和推理成本的高昂,限制了MLLMs在学术界和工业界的广泛应用。因此,研究高效轻量级的MLLMs具有巨大潜力,特别是在边缘计算场景中。 论文深入探讨了高效MLLM文献的领域,提供了一个全面的视角…

FLASH闪存

一、FLASH简介 1、FLASH简介 (1)STM32F1系列的FLASH包含程序存储器、系统存储器和选项字节三个部分,通过闪存存储器接口(外设)可以对程序存储器和选项字节进行擦除和编程 (2)读写FLASH的用途…

Setapp AI 怎么样,值得订阅吗?

Setapp 是一款提供 240 多款 Mac 软件库,可以满足 Mac 和 iOS 用户的各种需求。只需支付一笔订阅费,就可以使用一系列应用程序,这些应用程序可以简化任务、提高创造力和组织工作流程。不过,Setapp 并不只注重应用程序的数量&#…

Transformer预测 | 基于Transformer的风电功率多变量时间序列预测(Matlab)

文章目录 预测效果文章概述模型描述程序设计参考资料预测效果 文章概述 Transformer预测 | 基于Transformer的风电功率多变量时间序列预测(Matlab) Transformer 模型本质上都是预训练语言模型,大都采用自监督学习 (Self-supervised learning) 的方式在大量生语料上进行训练,…

【机器学习300问】127、怎么使用词嵌入?

在探讨如何使用词嵌入之前,我们首先需要理解词嵌入模型的基础。之前的文章已提及,词嵌入技术旨在将文本转换为固定长度的向量,从而使计算机能够解析和理解文本内容。可以跳转下面链接去补充阅读哦! 【机器学习300问】126、词嵌入…

【链表经典面试题】LeetCode138.复制带随机指针的链表(链表深拷贝)

📇文章目录 🚀题目描述🚀思路1:🚀思路2:🚀完整代码 🚀题目描述 解读: 题目意思就是 给你一个链表 这个链表中除了有next指针之外 还有一个指向这个链表的随机位置的一个指…

简易人工智能入门

一、监督or非监督 监督学习(Supervised Learning):训练集有标记信息(Y),学习方式有分类和回归 无监督学习(Unsupervised Learning):训练集没有标记信息,学习…

事件驱动架构详解:触发与响应构建高效系统

目录 前言1. 事件驱动架构概述1.1 什么是事件1.2 事件驱动架构的核心概念 2. 事件驱动架构的实现2.1 基于消息队列的实现2.2 基于发布-订阅模式的实现2.3 基于流处理的实现 3. 事件驱动架构的优势3.1 松耦合性3.2 可扩展性3.3 异步处理3.4 灵活性 4. 事件驱动架构的应用场景4.1…

管道液位传感器在扫地机器人的应用

管道液位传感器在扫地机器人中的应用正日益受到重视。随着人们生活压力的增加,扫地机器人成为了解决家务烦恼的得力助手,而其中一个重要功能就是缺水提醒。实现这一功能的关键便是管道液位传感器。 管道液位传感器能够及时监测水箱中水的水位&#xff0…

工商业光伏项目怎么做?

随着全球对可再生能源的关注度不断提高,工商业光伏项目已成为企业实现绿色转型、降低能耗成本的重要途径。本文将详细介绍工商业光伏项目的开发流程,以及项目实施过程中需要注意的关键点。 一、项目前期准备 在启动工商业光伏项目之前,首先要…

buuctf----firmware

- -一定不能再ubutu22进行,我是在18(血泪教训) binwalk安装 buuctf firmware(binwalk和firmware-mod-kit的使用)_buu firmware-CSDN博客 参考博客 指令 sudo apt-get update sudo apt-get install python3-dev python3-setuptools python3-pip zlib1g-dev libmagic-dev pi…

oracle中执行select ... for update需要什么权限?

oracle中执行select … for update需要什么权限? 问题 在oracle中,一个用户执行select … for update需要什么权限? 分析测试 用户1: test_0614 用户2:test 目标表:test.t_0614 执行语句:se…

MySQL—索引—基础语法

目录 一、创建、查看以及删除索引的语法 (1)创建索引 1、1会用到一个关键字:CREATE。 1、2增加索引还可以用到另外一个关键字——ALTER TABLE 表名 ADD INDEX ... 。 2、解释。 (2)查看索引 1、查看索引需要用到…

Vue3模拟国足18强赛抽签

Vue3国足18强赛抽签 国足遇到这个对阵&#xff0c;能顺利出现吗&#xff1f; 1、系统演示 Vue3模拟国足18强赛抽签 2、关键代码 开始抽签 <script setup> import FenDang from "/components/chouqian/FenDang.vue"; import {ref} from "vue";le…

我又挖到宝了!小米、352、希喂宠物空气净化器除毛能力PK

养宠家庭常常因为猫咪们掉毛的问题烦恼。无论是短毛猫还是长毛猫&#xff0c;它们的毛发总是无处不在&#xff0c;从沙发到地毯&#xff0c;从床铺到衣物&#xff0c;甚至飘散在空气中。其中最难清理的就是飘浮在空气中的浮毛&#xff0c;最让人担心的是&#xff0c;空气中的浮…

TikTok 推出专属AI 内容工具

TikTok最近推出了一款极具实用性的新工具包——TikTok Symphony。它融合了生成式人工智能技术&#xff0c;让内容创作变得更加迅速和便捷。 无论是营销人员还是创作者&#xff0c;都能在TikTok上轻松制作出高质量的内容。Symphony将人类的创造力与AI的高效性完美融合&#xff0…

ARM32开发--存储器介绍

知不足而奋进 望远山而前行 目录 文章目录 前言 存储器分类 RAM ROM EEPROM Flash 总结 前言 在现代计算机系统中&#xff0c;存储器扮演着至关重要的角色&#xff0c;不仅影响着数据的存取速度和稳定性&#xff0c;还直接关系到计算机系统的性能和应用场景的选择。存…

【vue3】for循环多选框勾选必填校验

业务场景&#xff1a; 多选项必选一个&#xff0c;选了的输入框必填 <el-row :gutter"20"><el-col :span"12"><el-form-item label"捆绑终端硬件标识" prop"terminalCodeList"><el-checkbox-groupv-model"…

人工智能--搭建人工神经网络

欢迎来到 Papicatch的博客 文章目录 &#x1f349;引言 &#x1f349;神经元与感知器 &#x1f348;神经元&#xff08;Neuron&#xff09; &#x1f348;感知器 &#x1f349;损失函数与梯度下降算法 &#x1f348;损失函数 &#x1f348;梯度下降算法 &#x1f349;…