使用Python爬取淘宝两千款套套

2023-05-16

在这里插入图片描述 各位同学们,好久没写原创技术文章了,最近有些忙,所以进度很慢,给大家道个歉。

> 警告:本教程仅用作学习交流,请勿用作商业盈利,违者后果自负!如本文有侵犯任何组织集团公司的隐私或利益,请告知联系猪哥删除!!!

一、淘宝登录复习

前面我们已经介绍过了如何使用requests库登录淘宝,收到了很多同学的反馈和提问,猪哥感到很欣慰,同时对那些没有及时回复的同学说声抱歉!

顺便再提一下这个登录功能,代码是完全没有问题。如果你登录出现申请st码失败的错误时候,可以更换_verify_password方法中的所有请求参数。 在这里插入图片描述

淘宝登录2.0改进中我们增加了cookies序列化的功能,目的就是为了方便爬取淘宝数据,因为如果你同一个ip频繁登录淘宝的话可能就会触发淘宝的反扒机制

关于淘宝登录的成功率,在猪哥实际的使用中基本都能成功,如果不成功就按上面的方法更换登录参数!

二、淘宝商品信息爬取

这篇文章主要是讲解如何爬取数据,数据的分析放在下一篇。之所以分开是因为爬取淘宝遇到的问题太多,而猪哥又打算详细再详细的为大家讲解如何爬取,所以考虑篇幅及同学吸收率方面就分两篇讲解吧!宗旨还会不变:让小白也能看得懂

本次爬取是调用淘宝pc端搜索接口,对返回的数据进行提取、然后保存为excel文件!

看似一个简单的功能却包含了很多问题,我们来一点一点往下看吧!

三、爬取单页数据

开始写一个爬虫项目我们都需要量化后再分步,而一般第一步便是先爬取一页试试!

1.查找加载数据URL

我们在网页中打开淘宝网,然后登录,打开chrome的调试窗口,点击network,然后勾选上Preserve log,在搜索框中输入你想要搜索的商品名称 在这里插入图片描述 这是第一页的请求,我们查看了数据发现:返回的商品信息数据插入到了网页里面,而不是直接返回的纯json数据在这里插入图片描述

2. 是否有返回纯json数据接口?

然后猪哥就好奇有没有返回纯json的数据接口呢?于是我就点了下一页(也就是第二页) 在这里插入图片描述 请求第二页后猪哥发现返回的数据竟然是纯json,然后比较两次请求url,找到只返回json数据的参数! 在这里插入图片描述 通过比较我们发现搜索请求url中如果带ajax=true参数的话就直接返回json数据,那我们是不是可以直接模拟直接请求json数据!

所以猪哥就直接使用第二页的请求参数去请求数据(也就是直接请求json数据),但是请求第一页就出现错误: 在这里插入图片描述 直接返回一个链接而 不是json数据,这个链接是什么鬼?点一下。。。 在这里插入图片描述 铛铛铛,滑块出现,有同学会问:**用requests能搞定淘宝滑块吗?**猪哥咨询过几个爬虫大佬,滑块的原理是收集响应时间,拖拽速度,时间,位置,轨迹,重试次数等然后判断是否是人工滑动。而且还经常变算法,所以猪哥选择放弃这条路!

3.使用请求网页接口

所以我们选择类似第一页(请求url中不带ajax=true参数,返回整个网页形式)的请求接口,然后再把数据提取出来!

在这里插入图片描述 这样我们就可以爬取到淘宝的网页信息了

四、提取商品属性

爬到网页之后,我们要做的就是提取数据,这里先从网页提取json数据,然后解析json获取想要的属性。

1.提取网页中商品json数据

既然我们选择了请求整个网页,我们就需要了解数据内嵌在网页的哪个位置,该怎么提取出来。

经过猪哥搜索比较发现,返回网页中的js参数:g_page_config就是我们要的商品信息,而且也是json数据格式! 在这里插入图片描述 然后我们写一个正则就可以将数据提取出来了!

goods_match = re.search(r'g_page_config = (.*?)}};', response.text)

2.获取商品价格等信息

要想提取json数据,就要了解返回json数据的结构,我们可以将数据复制到一些json插件或在线解析 在这里插入图片描述 了解json数据结构之后,我们就可以写一个方法去提取我们想要的属性了 在这里插入图片描述

五、保存为excel

操作excel有很多库,网上有人专门针对excel操作库做了对比与测评感兴趣可以看看:https://dwz.cn/M6D8AQnq

猪哥选择使用pandas库来操作excel,原因是pandas比较操作方便且是比较常用数据分析库!

1.安装库

pandas库操作excel其实是依赖其他的一些库,所以我们需要安装多个库

pip install xlrd
pip install openpyxl
pip install numpy
pip install pandas

2.保存excel

在这里插入图片描述 这里有点坑的是pandas操作excel没有追加模式,只能先读取数据后使用append追加再写入excel!

查看效果 在这里插入图片描述

六、批量

一次爬取的整个流程(爬取、数据提取、保存)完成之后,我们就可以批量循环调用了。 在这里插入图片描述 这里设置的超时秒数是猪哥实践出来的,从3s、5s到10s以上,太频繁容易出现验证码! 在这里插入图片描述 猪哥分多次爬取了两千多条数据 在这里插入图片描述

七、爬取淘宝遇到的问题

爬取淘宝遇到了非常多的问题,这里为大家一一列举:

1.登录问题

在这里插入图片描述 问题:申请st码失败怎么办? 回答:更换_verify_password方法中的所有请求参数。

参数没问题的话登录基本都会成功!

2.代理池

为了防止自己的ip被封,猪哥使用了代理池。爬取淘宝需要高质量的ip才能爬取,猪哥试了很多网上免费的ip,基本都不能爬取。 在这里插入图片描述

但是有一个网站的ip很好 站大爷:http://ip.zdaye.com/dayProxy.html ,这个网站每小时都会更新一批ip,猪哥试过还是有很多ip是可以爬取淘宝的。

3.重试机制

为了防止正常请求失败,猪哥在爬取的方法上加上了重试机制! 在这里插入图片描述 需要安装retry库

pip install retry

4.出现滑块

上面那些都没问题,但是还是会出现滑块,猪哥测试过很多次,有些爬取20次-40次左右最容易出现滑块。 在这里插入图片描述 出现滑块只能等个半小时后继续爬,因为目前还不能使用requests库解决滑块,后面学习selenium等其他框架看看是否能解决!

5.目前这只爬虫

目前这只爬虫并不完善,只能算是半成品,有很多可以改进的地方,比如自动维护ip池功能,多线程分段爬取功能,解决滑块问题等等,后面我们一起来慢慢完善这只爬虫,使他可以成为一只完善懂事的爬虫!

源码:https://github.com/pig6/taobao_spider,快去试试你感兴趣的商品吧!

转载于:https://my.oschina.net/u/3763101/blog/3102735

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用Python爬取淘宝两千款套套 的相关文章

  • linux shell 命令 echo中输出变量

    脚本文件 xff1a test sh bin bash analysis date 61 1 开始执行方法 function start for str in 0 do echo 39 str str 39 echo 39 str 39 s
  • 免费获取论文全文的方法,SCI-HUB的使用教程

    很多人不在学校期间需要看文献全文 xff0c 很多人获取文章的方式或是在网上求助或是给原作者索要 在SCI HUB出现后 xff0c 这些麻烦都不需要 SCI PUB上保存了超过了4700万篇科研文献 SCI PUB的网址 使用方法 xff
  • Leetcode: Palindrome Partitioning I & II

    Problem I Palindrome Partitioning I Given a string s partition s such that every substring of the partition is a palindr
  • Hadoop 知识点总结——HDFS读流程和写流程

    HDFS读流程和写流程 前言HDFS的读数据流程HDFS的写数据流程 大家好 xff0c 我是风云 xff0c 欢迎大家关注我的博客 笑看风云路 xff0c 在未来的日子里我们一起来学习大数据相关的技术 xff0c 一起努力奋斗 xff0c
  • Mapreduce实例(五):二次排序

    MR 实现 二次排序 实现思路代码实现自定义key的代码 xff1a 分区函数类代码分组函数类代码Map代码 xff1a Reduce代码 xff1a 完整代码 xff1a 大家好 xff0c 我是风云 xff0c 欢迎大家关注我的博客 或
  • SpringSecurityOAuth2 登录 Miss grant type问题

    SpringSecurityOAuth2 登录传值的时候会出现 Miss grant type问题 解决方式为 xff1a 在header 加上 39 Content Type 39 39 application x www form ur
  • 【思维导图】消息中间件

  • su: 警告:无法切换到目录/home/oracle: 权限不够-bash: /home/oracle/.bash_profile: 权限不够

    在使用linux服务器时 xff0c 通过root用户切换到oracle时报错 报错如下图 xff1a 原因 xff1a 权限不足 xff01 解决 xff1a 查看oracle用户情况 xff1a id oracle 查看目录权限 xff
  • 学生时代的书单

    大话系列的书 xff0c 用独特的行文风格 xff0c 以风趣 幽默的语言向读者讲述 概念原理知识 xff0c 用漫画式的插图帮助读者理解晦涩 枯燥的技术 xff0c 让我们在快乐中掌握知识 xff01 1 大话通信 通信基础知识读本 作者
  • tensorflow配置只使用CPU

    文章目录 1 方法一2 方法二 有些场景下 xff0c 比如GPU版本运行失败或其它原因 xff0c 需要强制tensorflow使用CPU xff0c 这里提供两种方法 xff0c 仅针对tensorflow2 1 方法一 span cl
  • 不同框架实现LSTM代码及转Onnx方法

    文章目录 1 Paddle 生成LSTM1 1 time major 61 False1 2 time major 61 True1 3 sequence lens1 4 无初始状态1 5 查看生成的onnx模型 2 pytorch 生成L
  • 从目标检测数据集中扣出所需类别进行分类

    文章目录 1 获取VOC数据集中两轮车2 接着做COCO数据集的分类数据获取3 YOLO 格式数据4 openimage数据获取获取标签根据displayname 获取 labelname 并指定我们想要的类别根据标签名找到对应的图片名称测
  • keras_cv进行数据增强

    使用keras cv来做分类数据增强 以下直接上流程 xff0c 具体的原理和代码上github查看源码及配合tensorflow官网及keras官网来做处理 当前 xff08 2022 10 8 这些文档还不是很全 span class
  • paddle的安装

    安装 1 安装paddle2 安装nccl3 验证 这次安装主要使用conda xff0c 可以有更好的安装体验 关于框架 xff0c 常用的tensorflow pytorch 但是国产的paddle也做的越来越好 xff0c 而且学习资
  • 去掉文件名中的特殊符号及中文

    文章目录 做深度学习算法收集数据时 xff0c 来源各种各样 xff0c 导至文件名混有各种特殊符号 xff0c 所在这里有一段代码 xff0c 可以把文件名进行处理 xff0c 只保留数字 字母和下划线 xff0c 然后对文件进行重命名
  • pip常用命令

    文章目录 看了一篇介绍pip的 xff0c 记录在这里 https mp weixin qq com s BejnKBp1OGTyW2SzHiCwcw 有安装 卸载 下载 xff0c 升级等使用方法 再贴个图 xff1a
  • 如何搭建高质量、高效率的前端工程体系--页面结构继承

    推荐理由 xff1a 推荐理由 xff1a 程序员在我们的印象中 xff0c 就是不停的敲代码 xff1b 而写的程序如何确保不出现bug 而且还能及时发现问题 xff0c 下面我推荐的这篇文章 xff0c 围绕整个前端的开发流程出发解决这
  • onnx删除无用属性

    这里写自定义目录标题 在推理onnx模型时 xff0c 报了一个错 xff0c 如下 xff1a InvalidGraph ONNXRuntimeError 10 INVALID GRAPH This is an invalid model
  • onnx模型显示输出形状

    在用netron查看模型时 xff0c 希望看到各个节点的shape xff0c 可以执行以下代码 1 依赖包 pip install onnx pip install onnx graphsurgeon index url https p
  • 使用opencv截取旋转框目标

    使用opencv截取旋转框目标 1 第一种方法2 第二种方法3 两种方法的简单对比4 opencv 最小面积矩形返回角度的理解4 1 version4 2之前4 2 version4 2之后 本文列举了两种方法 xff0c 使用的数据如图

随机推荐

  • Tensorflow pytorch及paddle交叉熵损失函数类标签及label smooth配置方法

    交叉熵损失函数类标签及label smooth配置方法 1 无class weight 无label smooth1 1 pytorch 输出1 2 paddle 输出1 3 tensorflow 输出 2 有label smooth 没有
  • 检测之YOLO转VOC

    文章目录 1 整理Yolo图像和标签文件2 实现yolo到voc的转换 检测系列相关文章参考如下链接 xff1a VOC数据的结构介绍及自定义生成 xff0c 用labelimg自已标注VOC标准数据的生成及分析 VOC易用labelimg
  • 检测之VOC转YOLO

    文章目录 检测所用数据有几种文件格式 xff0c 我们对于检测 xff0c 将使用VOC格式做为基础 xff0c 与其它格式的的互转实现部分如下 xff1a 检测系列相关文章参考如下链接 xff1a VOC数据的结构介绍及自定义生成 xff
  • windows安装wsl2

    总的来说是按照这三个链接来的 xff0c 也写了一个大体流程 wsl对win版本有要求 xff0c 可以 win 43 r winver查看 原始参考链接 xff1a 1 xff09 https zhuanlan zhihu com p 4
  • 2、picodet转onnx裁剪及python onnxruntime推理

    文章目录 1 对picodet xs1 1 动态图转静态图1 2 静态图转onnx1 3 paddle 含后处理 all 版本的推理1 4 onnx 含后处理 all 进行推理1 5 onnx 不含后处量 base模型推理1 5 1 获取o
  • 3、picodet c++版onnxruntime推理及reshape和transpose的c++实现

    文章目录 1 完整onnx c 43 43 推理2 裁剪后模型的推理2 1 分类reshape和transpose用python模拟c 43 43 2 2 回归的reshape和transpose的python模拟 3 softmax改进
  • linux拷备部分文件

    功能两个 1 从一个文件夹下拷备随机选取部分文件到另一个文件夹 span class token function ls span src path span class token operator span span class tok
  • 翻译:在vscode中调试es6

    原文 xff1a How to debug ES6 NodeJS with VSCode katopz Medium 快速实践 先上项目 xff1a katopz vscode debug nodejs es6 How to debug E
  • JavaScript 的addEventListener() 事件监听详解!

    JavaScript 的addEventListener 事件监听详解 xff01 addEventListener 用于向指定元素添加事件 可以向一个元素添加多次事件或者多次不同事件 xff0c 后面的事件是不会覆盖前面的 语法 xff1
  • moviepy快速视频转图片

    功能如标题 xff0c 代码如下 xff1a span class token keyword import span os span class token keyword import span numpy span class tok
  • 获取onnx模型中权重并画出分布图

    如下为代码 xff0c 主要应用场景是在做模型量化处理时 xff0c 常见的量化是int8 int16 如果数据分布不合适会存在较大的量化精度损失 比如int8 xff0c 希望权得的分布是在 128 127之间 span class to
  • C# Newtonsoft.Json JObject移除属性,在序列化时忽略

    一 针对 单个 对象移除属性 xff0c 序列化时忽略处理 JObject实例的 Remove 方法 xff0c 可以在 指定序列化时移除属性和值 示例如下 xff1a json 序列化 JObject obj1 61 JObject Fr
  • 2016,梦想起航

    2016 xff0c 梦想起航 10 9 8 7 6 5 4 3 2 1 xff0c 新年快乐 xff01 xff0c 伴随着跨年晚会上各位主持人的新年祝福 xff0c 2017年的大幕正式开启 xff0c 2016年的挂历已经发黄 xff
  • 基础篇——Linux和树莓派发行版以及raspbian、ubuntu、debian、ros的关系

    背景故事 初学Linux经常会听到Linux ubuntu debian raspbian centos等等名词 xff0c 它们之间是什么关系 xff0c 傻傻分不清楚 xff0c 这里摘录一些书上的内容 xff0c 理清楚它们的关系 L
  • 中级篇——树莓派系统备份恢复的两种方式

    树莓派系统备份恢复 方式一 xff1a 使用树莓派烧录工具 xff0c Win32DiskImager 工具的读取功能 xff0c 如下图 优点是操作简单 xff0c 缺点也很明显 xff0c 因为是全盘读取 xff0c 所以读取的备份文件
  • 利用实例学CMMI V2.0 (1)

    越来越多客户询问关于CMMI v2 0 xff0c 而且这个模型不像v1 3可以免费下载 xff0c 所以我们需要一些辅助资料 xff0c 帮一些有兴趣的人预先了解 xff0c 尤其是已经学过v1 3的 xff0c 可以在此基础上学习v2
  • Ubuntu 16.04升级python3.6及解决终端打不开的bug

    Ubuntu 16 04 默认安装python3的版本为python3 5 xff0c 而在一些场景下我们需要用到python3 6 xff0c 于是本人尝试将python3 5升级为python3 6 xff0c 但期间出现了界面模式下终
  • Dockerfile 指令详细介绍

    使用 Dockerfile 定制镜像 这里仅讲解如何运行 Dockerfile 文件来定制一个镜像 具体 Dockerfile 文件内指令详解 xff0c 将在下一节中介绍 xff0c 这里你只要知道构建的流程即可 下面以定制一个nginx
  • linux系统下cat命令的使用

    运维那些事 2017 01 22 21 15 cat命令是Linux系统下查看文件内容用的指令 xff0c 还可以将显示的信息转入或附加到文件上 命令格式 cat 选项 文件 命令功能 cat主要有三大功能 xff1a 一次显示整个文件 c
  • 使用Python爬取淘宝两千款套套

    各位同学们 xff0c 好久没写原创技术文章了 xff0c 最近有些忙 xff0c 所以进度很慢 xff0c 给大家道个歉 gt 警告 xff1a 本教程仅用作学习交流 xff0c 请勿用作商业盈利 xff0c 违者后果自负 xff01 如