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

一、淘宝登录复习

前面我们已经介绍过了如何使用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池功能,多线程分段爬取功能,解决滑块问题等等,后面我们一起来慢慢完善这只爬虫,使他可以成为一只完善懂事的爬虫!

源码放在阅读原文中,快去试试你感兴趣的商品吧

—————————————

往期精彩:

  • 真正的善良,在于收钱办事

  • 奥巴马买了部纪录片,介绍中国企业家开了一间《美国工厂》

  • 拼多多:三亿人在用,剩下十亿人在吐槽

用Python爬取淘宝2000款套套相关推荐

  1. 用Python爬取淘宝2000款套套,我发现了一个重要秘密

    点击上方"码农突围",马上关注,每天早上8:50准时推送 真爱,请置顶或星标 一.淘宝商品信息爬取 这篇文章主要是讲解如何爬取数据,数据的分析放在下一篇.之所以分开是因为爬取淘宝遇 ...

  2. python 爬取淘宝网课

    python爬取淘宝网课,打开web控制台,发现有个链接可以下载到对应的内容,下载的格式是m3u8,用文本打开里面是许多.ts链接,当然百度后得知可以直接下个vlc然后下载,但是还是想用python试 ...

  3. python爬取淘宝商品图片

    python爬取淘宝商品的图片 话不多说,直接上代码: from selenium import webdriver from selenium.webdriver.common import key ...

  4. Python爬取淘宝女模特信息

    前言 Python爬取淘宝美女信息下载本地并同时存储mysql数据库,存储数据库用到了pymysql模块,sql语句简单好用,直接上代码,源码请点链接Python-Spiders文集. 项目结构: 本 ...

  5. python爬淘宝app数据_一篇文章教会你用Python爬取淘宝评论数据(写在记事本)

    [一.项目简介] 本文主要目标是采集淘宝的评价,找出客户所需要的功能.统计客户评价上面夸哪个功能多,比如防水,容量大,好看等等. [二.项目准备工作] 准备Pycharm,下载安装等,可以参考这篇文章 ...

  6. 用Python爬取淘宝网商品信息

    用Python爬取淘宝网商品信息 转载请注明出处 网购时经常会用到淘宝网 点我去淘宝但淘宝网上的商品琳琅满目,于是我参照中国大学 MOOC的代码写了一个爬取淘宝网商品信息的程序 代码如下: impor ...

  7. python电商数据挖掘_利用Python爬取淘宝商品并数据挖掘与分析实战!此乃大型项目!...

    项目内容 本案例选择>> 商品类目:沙发: 数量:共100页 4400个商品: 筛选条件:天猫.销量从高到低.价格500元以上. 项目目的 1. 对商品标题进行文本分析 词云可视化 2. ...

  8. 第一篇博客,python爬取淘宝信息

    python爬取淘宝信息 本人只是刚学python的菜鸟,代码不规范及需改进的地方请指教 我们直接看代码吧!哈哈 import requests from bs4 import BeautifulSo ...

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

    各位同学们,好久没写原创技术文章了,最近有些忙,所以进度很慢,给大家道个歉. > 警告:本教程仅用作学习交流,请勿用作商业盈利,违者后果自负!如本文有侵犯任何组织集团公司的隐私或利益,请告知联系 ...

  10. Python爬取淘宝商品详情页数据

      在讲爬取淘宝详情页数据之前,先来介绍一款 Chrome 插件:Toggle JavaScript (它可以选择让网页是否显示 js 动态加载的内容),如下图所示: 当这个插件处于关闭状态时,待爬取 ...

最新文章

  1. HTTPDNS成为移动互联网的标配–原因与原理解析(转)
  2. 关于Jquery的parent和parents
  3. qt 实现拖动矩形角度_手机上如何使用CAD角度标注功能?
  4. ORA-00980与PL/SQL程序编译出错
  5. JavaScript基础5——关于ECMAscript的函数
  6. linux下进程调度模拟程序,linux认证辅导:linux进程调度模拟怎么做?
  7. 你准备好了吗,he is coming
  8. flask-sqlalchemy Models
  9. 分享一些查询资源的网站
  10. DSOFramer 控件修改成功
  11. FPGA的基本设计流程
  12. 黑科技项目:英雄无敌III Mod Fallen Angel介绍
  13. CSS常用定位方法(绝对定位、相对定位、固定定位)
  14. 文件云端备份恢复onedriver+SyncToy
  15. IPSec基础-IPSec协议类型
  16. 认证学习4 - Bearer认证(Token认证)讲解、代码实现、演示
  17. Android自定义九宫格密码解锁
  18. 小兵物语---短篇小说
  19. 华为云+AI+5G,点燃2020政企智能升级
  20. PYTHON笔记第十一章之pygame.mixer

热门文章

  1. 【原生JS】web原生文字轮播效果
  2. iOS 将本地项目/demo上传到github的简单方法
  3. 马斯克再次创造历史!三位太空游客坐五手火箭成功升空,今晚达到空间站,票价3.5亿...
  4. 看了这个视频都想辞职了
  5. 几百万消息在消息队列里积压了几个小时!完了。。。
  6. 看看人家那后端API接口写得,那叫一个牛逼,再看看我的,像坨屎!
  7. 为什么说LinkedHashMap是Java中最大的数据结构? 了解一下?
  8. GitHub 标星 3.2w!史上最全技术人员面试手册!FackBoo发起和总结
  9. 为什么会出现35岁就失业的魔咒?
  10. 为什么大部分的程序员成不了架构师?为什么?