python爬虫爬取淘宝商品比价||淘宝商品详情API接口

最近在学习北京理工大学的爬虫课程,其中一个实例是讲如何爬取淘宝商品信息,现整理如下:

功能描述:获取淘宝搜索页面的信息,提取其中的商品名称和价格 

探讨:淘宝的搜索接口

           翻页的处理

技术路线:requests‐re

步骤:

1 分析搜索接口和翻页的URL对应属性(由于淘宝有反爬虫机制,我们事先需要先登录,绕过登录界面进行爬取)

淘宝/天猫按关键字搜索淘宝商品 API 返回值说明

item_search-按关键字搜索淘宝商品 

taobao.item_search

公共参数

名称类型必须描述
keyString调用key(必须以GET方式拼接在URL中)
secretString调用密钥
api_nameStringAPI接口名称(包括在请求地址中)[item_search,item_get,item_search_shop等]
cacheString[yes,no]默认yes,将调用缓存的数据,速度比较快
result_typeString[json,jsonu,xml,serialize,var_export]返回数据格式,默认为json,jsonu输出的内容中文可以直接阅读
langString[cn,en,ru]翻译语言,默认cn简体中文
versionStringAPI版本

请求参数

请求参数:q=女装&start_price=0&end_price=0&page=1&cat=0&discount_only=&sort=&page_size=&seller_info=&nick=&ppath=&imgid=&filter=

参数说明:q:搜索关键字
page:页数

响应参数

Version: Date:

名称类型必须示例值描述

items

items[]0按关键字搜索淘宝商品

在搜索框输入“ 口罩 ”:

https://s.taobao.com/search?q=口罩&js=1&stats_click=search_radio_all%3A1&initiative_id=staobaoz_20200404&ie=utf8(起始页)

https://s.taobao.com/search?q=口罩&js=1&stats_click=search_radio_all%3A1&initiative_id=staobaoz_20200404&ie=utf8&bcoffset=4&p4ppushleft=1%2C48&s=44&ntoffset=4 (第二页)

https://s.taobao.com/search?q=口罩&js=1&stats_click=search_radio_all%3A1&initiative_id=staobaoz_20200404&ie=utf8&bcoffset=4&p4ppushleft=1%2C48&ntoffset=4&s=88(第三页)

                                                     每页有44个物品

然后打开开发者模式:

找到 cookie 和 user-agent

图片

图片

2  对于每个页面,提取商品名称和价格信息

查看其中一个URL链接的HTML文本:

可以看到商品价格和名称分别在:view_price ,raw_title字段,可以通过正则表达式进行匹配

图片

图片

3 将信息输出到屏幕上

图片

源码如下:

import requestsimport redef getHTMLText(url, header):    try:        r = requests.get(url, timeout=30, headers=header)        r.raise_for_status()        r.encoding = r.apparent_encoding        return r.text    except:        return ""def parsePage(ilt, html):    try:        plt = re.findall(r'\"view_price\"\:\"[\d\.]*\"', html)        tlt = re.findall(r'\"raw_title\"\:\".*?\"', html)        for i in range(len(plt)):            price = eval(plt[i].split(':')[1])            title = eval(tlt[i].split(':')[1])            ilt.append([price, title])    except:        print("")def printGoodsList(ilt):    tplt = "{:4}\t{:8}\t{:16}"    print(tplt.format("序号", "价格", "商品名称"))    count = 0    for g in ilt:        count = count + 1        print(tplt.format(count, g[0], g[1]))def main():    goods = '口罩'    depth = 3    start_url = 'https://s.taobao.com/search?q=' + goods    infoList = []    for i in range(depth):        try:            url = start_url + '&s=' + str(44 * i)            headers = {                "user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36",                "cookie": "t=3740175161b86e1af2b115b6841c32c0; lLtC1_=1; _samesite_flag_=true; cookie2=18420f1cd8e30d8e6109a1404a84002e; _tb_token_=353be1bb54db; thw=cn; _m_h5_tk=d606fe16c0e6a08db0b1ffb9d29470a4_1585735430453; _m_h5_tk_enc=d959a53bb548df2635d20f6336201e08; tk_trace=oTRxOWSBNwn9dPyorMJE%2FoPdY8zfvmw%2Fq5hp2NfBzP4gKCub6aQRjGnwgQfZeebgzqZLnVvfVfuxmOAckzdn8z9FwVFU5vP8FkLnLL4M%2B6wV%2B19uVAjEEctVyz3yypK%2FKCYnv6SeFz%2F4iyg7BAc1gTey%2BgmE%2BMVvCVuGPbG2nnVDBcE1wQ7rOt2RDOHkxf94LVgKemAaywxfQw3bGxWNCDcPH8fY8lcCzaRf7oVxEBlEuam5U4ubGkwuka26k%2FhWMPatkpRRx94y6pCZyoYEYCmS6uo%3D; enc=etROYELhyf0h8EMleJ%2BszwuKv35ybIdX5c8%2FHagXQjX0IW7RrIHyA0md%2BNjS%2BjkVA%2BWSBX2ZzOrRnQVrZOUbqg%3D%3D; hng=CN%7Czh-CN%7CCNY%7C156; cna=XGtnFni+VC8CAdz5eaVgjDhI; unb=1591070119; lgc=%5Cu7231%5Cu7B11%5Cu6211; cookie17=UoTV7Xp9CdRoqw%3D%3D; dnk=%5Cu7231%5Cu7B11%5Cu6211; tracknick=%5Cu7231%5Cu7B11%5Cu6211; _l_g_=Ug%3D%3D; sg=%E6%88%919f; _nk_=%5Cu7231%5Cu7B11%5Cu6211; cookie1=Vv9PmpXZo6HhF57DVhpuis8jAofsZzXYV9agGn5u29w%3D; alitrackid=login.taobao.com; lastalitrackid=login.taobao.com; mt=ci=0_1; v=0; JSESSIONID=F0CE9C142B4C2D1675F031E2BC94D08A; tfstk=cM-CBsfsaQKalUNRfBMN8_CLRuSCacZCQv1MdFeA0XeKL09C6s4Q0sNCRLVTXZB1.; l=dBxLPJbIQ1IB9WDsBOCZVBLZhnQTGIRjDuSpQR8pi_5BW_QDDkbOo_p4QEp6DjWcMITB45hH9bwtMekbJPDsw9x6XaZTWaDDBOf..; isg=BExMEitIfhv0zmpsaPAdQs6PHax-hfAvx26vAaYNMfesMe07zpQ_v7XL0DkJKiiH; sgcookie=EWtS0eTKtWNu2wucfnvK6; uc1=existShop=false&cookie16=VFC%2FuZ9az08KUQ56dCrZDlbNdA%3D%3D&pas=0&cookie21=W5iHLLyFeYZ1WM9hVnmS&cookie14=UoTUP2WB4TWk0g%3D%3D&cookie15=WqG3DMC9VAQiUQ%3D%3D; uc3=id2=UoTV7Xp9CdRoqw%3D%3D&nk2=0%2B52brjO&vt3=F8dBxdAR%2Be8PPlDHvf8%3D&lg2=VFC%2FuZ9ayeYq2g%3D%3D; csg=8854d1ae; skt=115ba0bf3e955a86; existShop=MTU4NTczMTI4Nw%3D%3D; uc4=id4=0%40UOx%2FVb7AgnGmuIpUq4kquCOwwZ%2Fx&nk4=0%400VVfR45YSz5VcR2eSMu07Ro%3D; _cc_=U%2BGCWk%2F7og%3D%3D"            }            html = getHTMLText(url, headers)            # print(html.text)            parsePage(infoList, html)        except:            continue    printGoodsList(infoList)main()

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OpenCV相机标定与3D重建(60)用于立体校正的函数stereoRectify()的使用

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 为已校准的立体相机的每个头计算校正变换。 cv::stereoRectify 是 OpenCV 中用于立体校正的函数,它基于已知的相机参数和相对位置&am…

1.17组会汇报

STRUC-BENCH: Are Large Language Models Good at Generating Complex Structured Tabular Data? STRUC-BENCH:大型语言模型擅长生成复杂的结构化表格数据吗?23年arXiv.org 1概括 这篇论文旨在评估大型语言模型(LLMs)在生成结构…

【机器学习实战入门】使用 Pandas 和 OpenCV 进行颜色检测

Python 颜色检测项目 今天的项目将非常有趣和令人兴奋。我们将与颜色打交道,并在项目过程中学习许多概念。颜色检测对于识别物体来说是必要的,它也被用作各种图像编辑和绘图应用的工具。 什么是颜色检测? 颜色检测是检测任何颜色名称的过程…

【k8s面试题2025】3、练气中期

体内灵气的量和纯度在逐渐增加。 文章目录 在 Kubernetes 中自定义 Service端口报错常用控制器Kubernetes 中拉伸收缩副本失效设置节点容忍异常时间Deployment 控制器的升级和回滚日志收集资源监控监控 Docker将 Master 节点设置为可调度 在 Kubernetes 中自定义 Service端口报…

数智化转型 | 星环科技Defensor 助力某银行数据分类分级

在数据驱动的金融时代,数据安全和隐私保护的重要性日益凸显。某银行作为数字化转型的先行者,面临着一项艰巨的任务:如何高效、准确地对分布在多个业务系统、业务库与数仓数湖中的约80万个字段进行数据分类和分级。该银行借助星环科技数据安全…

mac配置 iTerm2 使用lrzsz与服务器传输文件

mac配置 1. 安装支持rz和sz命令的lrzsz brew install lrzsz2. 下载iterm2-send-zmodem.sh和iterm2-recv-zmodem.sh两个脚本 # 克隆仓库 git clone https://github.com/aikuyun/iterm2-zmodem ~/iterm2-zmodem# 进入到仓库目录 cd ~/iterm2-zmodem# 设置脚本文件可执行权限 c…

redis 分布式重入锁

文章目录 前言一、分布式重入锁1、单机重入锁2、redis重入锁 二、redisson实现重入锁1、 添加依赖2、 配置 Redisson 客户端3、 使用 Redisson 实现重入锁4、 验证5、运行项目 三、redisson分布式锁分析1、获取锁对象2、 加锁3、订阅4、锁续期5、释放锁6、流程图 前言 通过前篇…

【git】如何删除本地分支和远程分支?

1.如何在 Git 中删除本地分支 本地分支是您本地机器上的分支,不会影响任何远程分支。 (1)在 Git 中删除本地分支 git branch -d local_branch_name git branch 是在本地删除分支的命令。-d是一个标志,是命令的一个选项&#x…

关于 Cursor 的一些学习记录

文章目录 1. 写在最前面2. Prompt Design2.1 Priompt v0.1:提示设计库的首次尝试2.2 注意事项 3. 了解 Cursor 的 AI 功能3.1 问题3.2 答案 4. cursor 免费功能体验5. 写在最后面6. 参考资料 1. 写在最前面 本文整理了一些学习 Cursor 过程中读到的或者发现的感兴趣…

使用python+pytest+requests完成自动化接口测试(包括html报告的生成和日志记录以及层级的封装(包括调用Json文件))

一、API的选择 我们进行接口测试需要API文档和系统,我们选择JSONPlaceholder免费API,因为它是一个非常适合进行接口测试、API 测试和学习的工具。它免费、易于使用、无需认证,能够快速帮助开发者模拟常见的接口操作(增、删、改、…

【Rust自学】13.2. 闭包 Pt.2:闭包的类型推断和标注

13.2.0. 写在正文之前 Rust语言在设计过程中收到了很多语言的启发,而函数式编程对Rust产生了非常显著的影响。函数式编程通常包括通过将函数作为值传递给参数、从其他函数返回它们、将它们分配给变量以供以后执行等等。 在本章中,我们会讨论 Rust 的一…

无人机技术架构剖析!

一、飞机平台系统 飞机平台系统是无人机飞行的主体平台,主要提供飞行能力和装载功能。它由机体结构、动力装置、电气设备等组成。 机体结构:无人机的机身是其核心结构,承载着其他各个组件并提供稳定性。常见的机身材料包括碳纤维、铝合金、…

Axios封装一款前端项目网络请求实用插件

前端项目开发非常经典的插件axios大家都很熟悉,它是一个Promise网络请求库,可以用于浏览器和 node.js 支持的项目中。像一直以来比较火的Vue.js开发的几乎所有项目网络请求用的都是axios。那么我们在实际的项目中,有时候为了便于维护、请求头…

【c++继承篇】--继承之道:在C++的世界中编织血脉与传承

目录 引言 一、定义二、继承定义格式2.1定义格式2.2继承关系和访问限定符2.3继承后子类访问权限 三、基类和派生类赋值转换四、继承的作用域4.1同名变量4.2同名函数 五、派生类的默认成员构造函数5.1**构造函数调用顺序:**5.2**析构函数调用顺序:**5.3调…

LDD3学习8--linux的设备模型(TODO)

在LDD3的十四章,是Linux设备模型,其中也有说到这个部分。 我的理解是自动在应用层也就是用户空间实现设备管理,处理内核的设备事件。 事件来自sysfs和/sbin/hotplug。在驱动中,只要是使用了新版的函数,相应的事件就会…

Python基于Django的图像去雾算法研究和系统实现(附源码,文档说明)

博主介绍:✌IT徐师兄、7年大厂程序员经历。全网粉丝15W、csdn博客专家、掘金/华为云//InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇&#x1f3…

Python爬虫(5) --爬取网页视频

文章目录 爬虫爬取视频 指定url发送请求 UA伪装请求页面 获取想要的数据 解析定位定位音视频位置 存放视频完整代码实现总结 爬虫 Python 爬虫是一种自动化工具,用于从互联网上抓取网页数据并提取有用的信息。Python 因其简洁的语法和丰富的库支持(如…

从AI原理到模型演进及代码实践 的学习二

参考:全面解析:从AI原理到模型演进及代码实践-CSDN博客 训练过程 Transformer仅一个Encoder模块就可以工作,可以处理信息抽取、识别、主体识别等任务,比如 BERT(Bidirectional Encoder Representations from Transfor…

利用EXCEL进行XXE攻击

0X00 前言 CTF 选手都清楚我们像 word 文档格式改成 zip 格式后,再解压缩可以发现其中多数是描述工作簿数据、元数据、文档信息的 XML 文件。实际上,与所有 post-Office 2007 文件格式一样,现代 Excel 文件实际上只是 XML 文档的 zip 文件。…

在Mac mini上实现本地话部署AI和知识库

在Mac mini上实现本地话部署AI和知识库 硬件要求:大模型AI,也叫LLM,需要硬件支持,常见的方式有2种:一种是采用英伟达之类支持CUDA库的GPU芯片或者专用AI芯片;第二种是采用苹果M系列芯片架构的支持统一内存架…