首页 > 其他分享 >【原创】淘宝关键词搜索爬取与解析

【原创】淘宝关键词搜索爬取与解析

时间:2023-02-07 01:44:20浏览次数:59  
标签:search url 关键词 Fetch 爬取 headers params 解析 page

本文所有教程及源码、软件仅为技术研究。不涉及计算机信息系统功能的删除、修改、增加、干扰,更不会影响计算机信息系统的正常运行。不得将代码用于非法用途,如侵立删!

淘宝关键词搜索及X5滑块

环境

  • win10、mac
  • Python3.9

根据关键词获取品牌列表

在这里插入图片描述
先根据搜索关键词获取到所有的品牌id:也就是ppath参数,目的是这样可以筛选更精准的数据,因为默认只显示100页数据

    def get_brand(self):
        """
        根据关键词获取品牌列表
        """
        headers = {
            "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9",
            "Accept-Language": "zh-CN,zh;q=0.9",
            "Cache-Control": "no-cache",
            "Connection": "keep-alive",
            "Pragma": "no-cache",
            "Referer": "https://s.taobao.com/search?q=^%^E7^%^AC^%^94^%^E8^%^AE^%^B0^%^E6^%^9C^%^AC^%^E7^%^94^%^B5^%^E8^%^84^%^91&imgfile=&js=1&stats_click=search_radio_tmall^%^3A1&initiative_id=staobaoz_20230127&tab=mall&ie=utf8&bcoffset=0&p4ppushleft=^%^2C44&style=grid&s=0",
            "Sec-Fetch-Dest": "document",
            "Sec-Fetch-Mode": "navigate",
            "Sec-Fetch-Site": "same-origin",
            "Sec-Fetch-User": "?1",
            "Upgrade-Insecure-Requests": "1",
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36",
            "sec-ch-ua": "^\\^Not_A",
            "sec-ch-ua-mobile": "?0",
            "sec-ch-ua-platform": "^\\^Windows^^",
        }
        cookies = {
            "cookie2": "1c1f03c4df47307258a30c65ce1db555",
        }
        url = "https://s.taobao.com/search"
        params = {
            "q": self.word,
            "imgfile": "",
            "js": "1",
            "stats_click": "search_radio_tmall^%^3A1",
            "initiative_id": "staobaoz_20230127",
            "tab": "mall",
            "ie": "utf8",
            "style": "grid"
        }
        # response = requests.get(url, headers=headers, params=params)
        response = self._parse_url(url=url, headers=headers, params=params)
        if not response:
            yield None
        # print(response.text)
        res = re.findall(r'g_page_config = (.*?)};', response.text, re.M | re.S)
        if not res:
            yield None
        datas = jsonpath.jsonpath(json.loads(res[0] + "}"), "$..sub")
        if not datas:
            yield None
        for data in datas[0]:
            yield data

根据关键词、品牌、销量搜索商品列表

在这里插入图片描述
具体的参数多抓几个包对比一下,很容易就分析出来了

    def get_products(self, ppath, page):
        """
        获取商品列表 根据销量排序
        ppath:品牌代码
        page:翻页
        """
        headers = {
            "Accept": "*/*",
            "Accept-Language": "zh-CN,zh;q=0.9",
            "Cache-Control": "no-cache",
            "Connection": "keep-alive",
            "Pragma": "no-cache",
            "Referer": "https://s.taobao.com/search?q=^%^E7^%^AC^%^94^%^E8^%^AE^%^B0^%^E6^%^9C^%^AC^%^E7^%^94^%^B5^%^E8^%^84^%^91&imgfile=&js=1&style=grid&stats_click=search_radio_tmall^%^3A1&initiative_id=staobaoz_20230127&tab=mall&ie=utf8&bcoffset=0&p4ppushleft=^%^2C44&cps=yes&ppath=20000^%^3A11119&sort=sale-desc&s=44",
            "Sec-Fetch-Dest": "script",
            "Sec-Fetch-Mode": "no-cors",
            "Sec-Fetch-Site": "same-origin",
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36",
            "sec-ch-ua": "^\\^Not_A",
            "sec-ch-ua-mobile": "?0",
            "sec-ch-ua-platform": "^\\^Windows^^",
        }
        url = "https://s.taobao.com/search"
        params = {
            "data-key": "s",
            "data-value": page,
            "ajax": "true",
            "_ksTS": "1674837683322_2012",
            "callback": "jsonp2013",
            "q": self.word,
            "imgfile": "",
            "js": "1",
            "style": "grid",
            "stats_click": "search_radio_tmall^%^3A1",
            "initiative_id": "staobaoz_20230127",
            "tab": "mall",
            "ie": "utf8",
            "bcoffset": "0",
            "p4ppushleft": "^%^2C44",
            "cps": "yes",
            "ppath": ppath,
            "sort": "sale-desc",
            "s": ''
        }
        # 第一页的时候请求参数不一样
        if page == 1:
            params['data-value'] = '0,1'
            params['data-key'] = 's,ps'
            params['s'] = (int(page) - 1) * 44
        else:
            params['data-value'] = int(page) * 44
            params['s'] = (int(page)-1) * 44
        response = requests.get(url, headers=headers, params=params)
        return response.text

滑块处理

在这里插入图片描述
触发滑块后,搜索并定位appkey,抓到punish.js
在这里插入图片描述
提取验证所需参数:
''appkey': 'X82Y__4efeef942d19c56bafab18ba3da969f4'
'token': '1c797559e58912c4ee46af4bd6371aec',
在这里插入图片描述
在这里插入图片描述
生成x5sec:"7b2277616762726964676561643b32223a223037393766353232633166646661326337346262333664616130356462383031434e434337497747454e7a746b2b7a356f493771495367454d4b447a344a4146227d"
在这里插入图片描述

效果

请添加图片描述

资源下载

数据demo下载:https://mp.csdn.net/mp_download/manage/download/UpDetailed


本文仅供学习交流使用,如侵立删!

标签:search,url,关键词,Fetch,爬取,headers,params,解析,page
From: https://www.cnblogs.com/c1033383881/p/17097126.html

相关文章

  • SV中的关键词使用virtual,cast
    virtualSV不允许一个子类句柄指向父类对象,但是可以让一个父类句柄指向子类对象。由于父类句柄只能访问父类的成员变量和方法,不利于验证环境的复用;所以为了让继承了同一父......
  • 《分布式技术原理与算法解析》学习笔记Day03
    分布式互斥方法什么是分布式互斥?对于同一个共享资源,当一个程序正在使用的时候,不希望被其他程序打扰,这种排他性的资源访问方式,叫做分布式互斥,被互斥访问的共享资源被称作......
  • 谷歌关键词是怎么排名的?google关键词优化
    本文主要分享关于谷歌排名算法的一些分析以及谷歌关键词优化的细节。本文由光算创作,有可能会被修改和剽窃,我们佛系对待这种行为吧。谷歌关键词排名是指确定网站在搜索引擎结......
  • javaScript - 预解析
    代码实例:console.log(data1)//undefinedvardata1=12;fn1();//executefunctionfn1functionfn1(){console.log("executefunctionfn1")}fn2();//fn2is......
  • ClickHouse(12)ClickHouse合并树MergeTree家族表引擎之AggregatingMergeTree详细解析
    目录建表语法查询和插入数据数据处理逻辑ClickHouse相关资料分享AggregatingMergeTree引擎继承自MergeTree,并改变了数据片段的合并逻辑。ClickHouse会将一个数据片段内所......
  • dom4j解析XML文档
    <spanstyle="font-size:14px;"><?xmlversion="1.0"encoding="utf-8"?><书架><书><书名>java就业培训教程</书名><作者>郝斌</作者><售价>36.2元</售......
  • Swift 4 JSON 解析指南
    Apple终于在Swift4的Foundation的模块中添加了对JSON解析的原生支持。虽然已经有很多第三方类库实现了JSON解析,但是能够看到这样一个功能......
  • Boss直聘职位信息爬取+分析
    BOSS直聘职位信息爬取分析先上结果,本次抓取了732条职位的信息入库:代码实现:importrequestsimportjsonfromlxmlimportetreefromrequests.exceptionsimportRequestExce......
  • drf入门之反序列化校验源码解析、drf请求、drf响应、视图组件介绍、两个视图基类及五
    drf入门之反序列化校验源码解析、drf请求、drf响应、视图组件介绍、两个视图基类及五个视图扩展类目录drf入门之反序列化校验源码解析、drf请求、drf响应、视图组件介绍、......
  • 关键词提取
     一般来说,TF-IDF算法和TextRank算法就可以满足大部分的关键词提取任务。但是在某些场景,基于文档本身的关键词提取还不是非常足够,有些关键词不一定会显式的出现在文档中,对于......