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

news2024/7/4 5:19:54

在这里插入图片描述

只需要替换原来的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.coloradmin.cn/o/1831371.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MMpose安装实例

摘要: 这个大数据训练发展较快,各种版本问题,不太好匹配,仅是安装就会大费周章。本文图文并茂的描述了一种成功的安装方式。仅供参考。 使用的win版本是win11,英伟达显卡是GeForce GTX 1660 SUPER。 1.cuda版本选择 通…

学生用小台灯什么牌子的好?五大强劲护眼台灯牌子分享

在这个数码时代,人们对屏幕的依赖程度越来越高,尤其是孩子们。他们不仅在学校里需要长时间盯着教科书,还会在学习和娱乐中使用各种数码设备。然而,这也使得眼睛健康问题逐渐凸显,尤其是儿童近视的问题。为了保护视力&a…

基于MCU平台的HMI开发的性能优化与实战(上)

随着汽车座舱智能化的不断演进,车内显示设备的数量显著增加,从传统的仪表盘和中控屏扩展至空调控制、扶手、副驾驶区域以及抬头显示(HUD)等多样化的显示单元。为了有效支持这些功能单元,同时控制整车成本,越…

从WWDC 2023看苹果的未来:操作系统升级与AI技术的融合

引言 在2024年的WWDC(苹果全球开发者大会)上,苹果公司展示了一系列创新技术和产品,其中最引人注目的莫过于操作系统的升级与AI技术的深度融合。作为一个备受期待的发布会,WWDC不仅向我们展示了苹果在技术上的前瞻性布…

Python发送电子邮件的步骤流程?如何设置?

Python发送电子邮件如何实现自动化?邮件发送的方法? 无论是自动化通知、日常业务沟通,还是营销活动,Python都能为我们提供强大的支持。使用Python发送电子邮件不仅方便快捷,还可以自动化日常任务。AokSend将详细介绍使…

leetcode 1355 活动参与者(postgresql)

需求 表: Friends ---------------------- | Column Name | Type | ---------------------- | id | int | | name | varchar | | activity | varchar | ---------------------- id 是朋友的 id 和该表的主键 name 是朋友的名字 activity 是朋友参加的活动的名字 表: Activit…

利用CNN识别英文语音数字

问题总述 任何一个数字,都是由10个基数构成的,本任务目的是借助于机器来实现英文语音数字的识别。下面,利用语音特征提取技术和卷积神经网络模型,对英文语音数字进行识别以解决上述问题。 步骤一:提取音频文件的语音…

总结之Docker(四)——镜像修改非ROOT用户权限后生成新镜像并发布

Docker拉去目标镜像 docker pull redis:6.2.5如果出现拉去过程超时,或者连接失败。 添加镜像加速器,以阿里云为例,阿里云目前推广提供镜像加速器,需要登录。 https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors 生成…

有没有和ai聊天的软件?介绍这三款聊天软件

有没有和ai聊天的软件?在科技飞速发展的今天,人工智能(AI)已经渗透到我们生活的方方面面,其中AI聊天软件以其独特的魅力,赢得了越来越多用户的青睐。今天,我们就来一起探索三款智能聊天软件的功…

【Java】已解决:java.lang.NoSuchMethodError异常

文章目录 一、问题背景二、可能出错的原因三、错误代码示例四、正确代码示例 已解决java.lang.NoSuchMethodError异常 一、问题背景 java.lang.NoSuchMethodError异常是Java运行时环境中一个常见的错误,它通常发生在尝试调用一个不存在的方法时。这个异常通常不是…

Unity制作背包的格子

1.新建一个面板 2.点击面板并添加这个组件 3.点击UI创建一个原始图像,这样我们就会发现图像出现在了面板的左上角。 4.多复制几个并改变 Grid Layout Group的参数就可以实现下面的效果了

战略网络优化:网络可观测性的综合方法

在网络成为运营支柱的时代,了解和优化网络性能至关重要。网络可观测性是了解网络性能的关键,它以一种全面、主动的方式超越了传统监控。本文说明了网络可观测性的变革力量,详细介绍了其优势、差异化因素及其在现代网络管理中的关键作用。 什…

2024年下一个风口是什么?萤领优选 轻资产创业项目全国诚招合伙人

2024年,全球经济与科技发展的步伐不断加快,各行各业都在探寻新的增长点与风口。在这样的时代背景下,萤领优选作为一个轻资产创业项目,正以其独特的商业模式和前瞻的市场洞察力,吸引着众多创业者的目光。(领取&#xff…

专业酒窖的布局与设计:为红酒提供理想保存条件

对于云仓酒庄雷盛红酒的爱好者而言,拥有一个专业的酒窖是保存和欣赏这些珍贵佳酿的方式。一个布局合理、设计精良的专业酒窖不仅能提供稳定的保存条件,还能确保红酒在理想状态下陈年,释放其深邃的香气和口感。 首先,酒窖的位置选择…

40、基于深度学习的线性预测设计(matlab)

1、原理及流程 深度学习的线性预测是一种利用深度神经网络模型进行线性回归预测的方法。其设计原理主要基于神经网络的层次化特性,利用多层感知器(MLP)等模型进行特征学习和非线性变换,从而提高线性预测的准确性。 设计流程如下…

HTTP/2 协议学习

HTTP/2 协议介绍 ​ HTTP/2 (原名HTTP/2.0)即超文本传输协议 2.0,是下一代HTTP协议。是由互联网工程任务组(IETF)的Hypertext Transfer Protocol Bis (httpbis)工作小组进行开发。是自1999年http1.1发布后的首个更新。…

第04章:IDEA的安装与使用

第04章:随堂复习与企业真题(IDEA安装与使用) 一、随堂复习 1. IDEA的认识 IDEA(集成功能强大、符合人体工程学(设置人性化))Eclipse 2. IDEA的下载、安装、卸载 卸载:使用控制面板进行卸载,…

Vue 使用setInterval定时器导致前端页面卡死(解决方法)

Vue 使用setInterval定时器导致前端页面卡死 原因 setinterval不会清除定时器队列,每重复执行1次都会导致定时器叠加,最终卡死你的网页。 其原因与JS引擎线程有关(需深入研究JS引擎线程) ,但是setTimeout是自带清除定…

深度学习网络结构之---Inception

目录 一、Inception名称的由来 二、Inception结构 三、Inception v2 四、Inception v3 1、深度网络的通用设计原则 2.卷积分解(Factorizing Convolutions) 3.对称卷积分解 3.非对称卷积分解 五、Inception v4 一、Inception名称的由来 Inception网…

Python MongoDB 基本操作

本文内容主要为使用Python 对Mongodb数据库的一些基本操作整理。 目录 安装类库 操作实例 引用类库 连接服务器 连接数据库 添加文档 添加单条 批量添加 查询文档 查询所有文档 查询部分文档 使用id查询 统计查询 排序 分页查询 更新文档 update_one方法 upd…