【Python实操】淘宝商品详情数据采集返回并实现可视化处理

news2024/9/30 5:36:26

开发工具

Python版本:3.6.4

相关模块:

DecryptLogin模块;

pyecharts模块;

以及一些Python自带的模块。

环境搭建

安装Python并添加到环境变量,pip安装需要的相关模块即可。

数据爬取

既然说了是模拟登录相关的爬虫小案例,首先自然是要实现一下淘宝的模拟登录啦。这里还是利用我们开源的DecryptLogin库来实现,只需三行代码即可:

'''模拟登录淘宝'''@staticmethoddef login():    lg = login.Login()    infos_return, session = lg.taobao()    return session

另外,顺便提一句,经常有人想让我在DecryptLogin库里加入cookies持久化功能。其实你自己多写两行代码就能实现了:

if os.path.isfile('session.pkl'):    self.session = pickle.load(open('session.pkl', 'rb'))else:    self.session = TBGoodsCrawler.login()    f = open('session.pkl', 'wb')    pickle.dump(self.session, f)    f.close()

我真不想在这个库里添加这个功能,后面我倒是想添加一些其他爬虫相关的功能,这个之后再说吧。好的,偏题了,言归正传吧。接着,我们去网页版的淘宝抓一波包吧。比如F12打开开发者工具后,在淘宝的商品搜索栏里随便输入点东西,就像这样:

图片

全局搜索一下诸如search这样的关键词,可以发现如下链接:

图片

看看它返回的数据是啥:

图片

看来应该没错了。另外,如果小伙伴们自己实战的时候没有找到这个接口api,可以尝试再点击一下右上角的下一页商品按钮:

图片

这样就肯定能抓到这个请求接口啦。简单测试一下,可以发现尽管请求这个接口所需携带的参数看上去很多,但实际上必须要提交的参数只有两个,即:

q: 商品名称s: 当前页码的偏移量

好啦,根据这个接口,以及我们的测试结果,现在就可以愉快地开始实现淘宝商品数据的抓取啦。具体而言,主代码实现如下:

'''外部调用'''def run(self):    search_url = 'https://s.taobao.com/search?'    while True:        goods_name = input('请输入想要抓取的商品信息名称: ')        offset = 0        page_size = 44        goods_infos_dict = {}        page_interval = random.randint(1, 5)        page_pointer = 0        while True:            params = {                        'q': goods_name,                        'ajax': 'true',                        'ie': 'utf8',                        's': str(offset)                    }            response = self.session.get(search_url, params=params)            if (response.status_code != 200):                break            response_json = response.json()            all_items = response_json.get('mods', {}).get('itemlist', {}).get('data', {}).get('auctions', [])            if len(all_items) == 0:                break            for item in all_items:                if not item['category']:                    continue                goods_infos_dict.update({len(goods_infos_dict)+1:                                             {                                                'shope_name': item.get('nick', ''),                                                'title': item.get('raw_title', ''),                                                'pic_url': item.get('pic_url', ''),                                                'detail_url': item.get('detail_url', ''),                                                'price': item.get('view_price', ''),                                                'location': item.get('item_loc', ''),                                                'fee': item.get('view_fee', ''),                                                'num_comments': item.get('comment_count', ''),                                                'num_sells': item.get('view_sales', '')                                            }                                        })            print(goods_infos_dict)            self.__save(goods_infos_dict, goods_name+'.pkl')            offset += page_size            if offset // page_size > 100:                break            page_pointer += 1            if page_pointer == page_interval:                time.sleep(random.randint(30, 60)+random.random()*10)                page_interval = random.randint(1, 5)                page_pointer = 0            else:                time.sleep(random.random()+2)        print('[INFO]: 关于%s的商品数据抓取完毕, 共抓取到%s条数据...' % (goods_name, len(goods_infos_dict)))

就是这么简单,我们已经大功告成啦。

这里我们来可视化一波我们抓到的奶茶数据呗。先来看看在淘宝上卖奶茶的商家在全国范围内的数量分布情况呗:

图片

没想到啊,奶茶店铺最多的地方竟然是广东。T_T

再来看看淘宝上卖奶茶的店铺的销量排名前10名呗:

图片

以及淘宝上评论数量前10名的奶茶店铺:

图片

再看看在这些店铺要运费和不要运费的商品比例呗:

图片

最后,再看看奶茶相关商品的售价区间呗:

图片

差不多今天就这样呗,相关文件里提供了本文中所涉及到的所有源代码以及爬取到的数据,需要的可以在公众号里回复"淘宝商品数据"自取。

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

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

相关文章

3519嵌入式如何通过ssh 或者telnet连接嵌入式设备

需求 PC电脑连接嵌入式设备,已经能够连接串口,想要额外连接嵌入式设备,查看终端信息。 尝试了两种方法:1.通过SSH登录(失败) 2.通过telnet登录(成功) 问题描述 1.SSH登录 3519通过网线和串口线连接PC windows,并在…

日本科学家利用AI技术在秘鲁纳斯卡沙漠地区找到303幅古代地画

据法新社24日报道,日本科学家利用 人工智能( AI)技术在秘鲁纳斯卡沙漠地区新发现了303幅古代地画。相关研究成果已于23日发表在《美国国家科学院院刊》上。 日本山形大学考古学家酒井正人23日在秘鲁首都利马宣布了这一新发现,他表…

JavaScript中的函数function

function 可以将一个函数赋给一个变量,直接调用 或者常规的有变量名的函数 break:打断循环 continue:打断当前循环,进行下一轮 debugger:调试程序自动断点 "use strict":严格模式 var hasStrictMode(function(){"use strict";r…

langchain 记忆力(memory),让语言大模型拥有记忆

1,简介 存储对话历史中的信息的能力称之为’记忆‘,这种工具可以单独使用,也可以无缝的集成到一条链中,记忆的存储长度是程序执行到结束,执行一次的所有记忆。 记忆的主要应用场景就是聊天机器人,聊天机器人的一个关键…

Golang | Leetcode Golang题解之第429题N叉树的层序遍历

题目: 题解: func levelOrder(root *Node) (ans [][]int) {if root nil {return}q : []*Node{root}for q ! nil {level : []int{}tmp : qq nilfor _, node : range tmp {level append(level, node.Val)q append(q, node.Children...)}ans append(a…

误删回收站的文件怎么恢复正常,不小心删除回收站的文件怎么找回

现如今,电脑在工作中承担着很重要的角色,里面往往存储着很多重要的工作资料文件,而回收站作为电脑对数据文件的最后保护,往往能够避免数据文件的丢失。下面就给大家详细讲解有关,误删回收站的文件怎么恢复,…

AI日常绘画【国庆海报】:盛世迎华诞,最强AI绘图大模型Flux国庆节海报制作教程

大家好,我是画画的小强 马上就要到祖国母亲的节日了,想想心里都美滋滋的,终于可以放松一下了。相信AI绘画关于国庆主题肯定也会精彩纷呈吧,今天和大家分享几组关于国庆海报的制作教程。 本文使用基于Flux的相关Lora模型。 Loar1…

Docker快速部署RabbitMq教程

1、拉取RabbitMQ镜像 docker pull rabbitmq:management RabbitMQ Management 插件为 RabbitMQ 提供了一个基于 Web 的用户界面(Management UI),允许你通过浏览器来监控、管理 RabbitMQ 实例。 因为docker默认是使用的是Docker Hub的官方镜…

Matlab进阶绘图第69期—同步坐标图

同步坐标是指将同一figure上的两个或两个以上的子图,用相同的X轴、Y轴或XY轴表示,以方便同步分析。 话不多说,先来看一下同步坐标图的成品效果: 特别提示:本期内容『数据代码』已上传资源群中,加群的朋友请…

RocketMQ 常用命令mqadmin与控制面板

使⽤发送和接收消息验证MQ 验证生产者: 配置 nameserver 的环境变量 ,在发送/ 接收消息之前,需要告诉客户端 nameserver 的位置。配置环境变量 NAMESRV_ADDR : vim /etc/profileexport NAMESRV_ADDR"192.168.136.66:9876;1…

虚幻引擎第三人称和第一人称任意切换

虚幻引擎想要在第三人称和第一人称之间任意切换 , 就需要创建两个摄像机 第一人称摄像机 默认激活 去掉勾选 然后添加一个增强输入 双击进去绑定 设置成已按下 , 这样长按只会生效一次 打开第三人称事件图表 , 按如图所示设置即可 , 记得设置第一人称用控制器旋转Yaw , 这…

【机器学习】音乐生成——AI如何创作个性化音乐与配乐

我的主页:2的n次方_ 音乐是人类文化的重要组成部分,它具有极强的情感表达和艺术价值。近年来,随着人工智能技术的飞速发展,AI已经能够自动生成音乐,甚至根据用户需求创作个性化配乐。AI生成音乐的应用场景广泛&…

antd嵌套表单验证

好久之前写的,但是突然想起来没写到这里,还是写一下吧~, 也没啥技术含量,就是有需要的同学要是能一下子看到就方便了~ 嵌套表单项精髓就是在shouldUpdate属性 注意这句,当 shouldUpdate 为 true 时,Form 的任意变化都…

LVS-NAT实战案例,实现四层负载均衡

工作原理 架构概述: 在LVS-NAT架构中,客户端的请求首先到达负载均衡器(LVS服务器),然后由LVS根据一定的算法将请求转发到后端的真实服务器。负载均衡器会通过NAT技术修改数据包的源地址和目标地址。 数据流转&#xff…

C++之STL—常用遍历算法

算法头文件 <algorithm>是所有STL头文件中最大的一个&#xff0c;范围涉及到比较、 交换、查找、遍历操作、复制、修改等等 <numeric>体积很小&#xff0c;只包括几个在序列上面进行简单数学运算的模板函数 <functional>定义了一些模板类,用以声明函数对象…

Blob数据类型报错时如何获取错误信息

const pdfOrg async (record) > {// 假设 transferExportPdf是结构 result 返回的错误信息let result await transferExportPdf({ batchId: record.batchId });//blob 结构const blob new Blob([result], {type: result.type,});if (blob.type "application/json&q…

【EPLAN】解决ELM与ELC授权不匹配问题

【更多软件使用问题请点击亿道电子官方网站】 1、 文档目标 解决EPLAN授权-ELM与ELC授权不匹配问题&#xff1b; 2、 问题场景 用于解决在EPLAN 服务器端 ELM 授权进行了更新激活&#xff0c;客户端授权连接后&#xff0c;客户端 ELC 授权信息没有变更的情况&#xff0c;尝试…

02 图结构

目录 图的基本概念图的存储结构图的遍历最小生成树最短路径问题 1.图的基本概念 图是由顶点集合及顶点间的关系组成的一种数据结构&#xff1a;G&#xff08;V&#xff0c;E&#xff09;&#xff0c;其中&#xff1a; 顶点集合V{x | x属于某个数据对象集} 是有穷非空集合 E {…

无人机之侦测技术篇

无人机的侦测技术是综合利用多种传感器来“发现”或“找到”无人机目标&#xff0c;并通过分析其物理属性&#xff08;如光学特性、热学特性、声学特性、磁学特性&#xff09;来进行识别和跟踪。 一、雷达探测 原理&#xff1a;雷达系统通过发射电磁波&#xff0c;利用无人机…

15年408计算机网络

第一题&#xff1a; 解析&#xff1a; 接收方使用POP3向邮件服务器读取邮件&#xff0c;使用的TCP连接&#xff0c;TCP向上层提供的是面向连接的&#xff0c;可靠的数据传输服务。 第二题&#xff1a; 解析&#xff1a;物理层-不归零编码和曼彻斯特编码 编码1&#xff1a;电平在…