翻,翻,翻

至此,我们已经写出了第一个爬虫程序,但功能还是比较单一。所以接下来,我们将更进一步,为爬虫添加翻页功能!

就爬虫本身而言,我们当然是希望爬回的信息越丰富越好,所以,如果爬虫只能爬一页的内容,显然是不符合我们的预期的。拿京东举例,商品结果页面不可能只有一页(除非精准搜索或小众商品):

所以,我们需要想方设法,让页面翻动起来。就上一个爬虫程序而言,爬取功能方面是没问题的。

“翻页”这一动作,其实可以有两种思路。在讲思路之前,我们先来看看为什么可以翻页。

如果我们想访问指定的网站,我们只需给出网页的URL(统一资源定位器)即可,因为在互联网中,每一个网页都对应一条URL。所以,我们可以尝试获得所有页面的URL,再做一个循环,将每一个页面的内容爬下来——这是思路一。

再回到我们平时上网,我们翻看网页,通常是使用网页自带的翻页键来翻页的。于是,我们同样的可以使用网页的翻页键进行翻页——这是思路二。

由于思路二涉及到一个新的库,鹦鹉先生打算放到后面留给读者思考,这里,我们先来看看思路一的实现。

我们不可能每爬一次,就把程序的URL重新复制粘贴一次,比较明智的方法是找到这些URL的规律,将规律写进循环即可!所以,我们先来看看京东的商品结果URL有什么特别之处:

(这里需要先手动翻一页,这样URL才会出现一些参数)

在这一段URL中,我们看到“page”这个参数,应该是和翻页有关。所以,我们可以多翻几页,再看看“page”有没有变化。

事实证明,“page”参数每翻一页,就乘3。所以,我们找到了翻页的“秘诀”——每翻一页,“page”参数乘3!于是,我们可以将“page”单独设置一个变量,再重新组合URL:

至此,“url”变量就是我们想要的可变URL!

于是,在外头加一个循环:

完成!只需找到规律,将规律写进循环,我们就得到了一个可自动翻页的爬虫!

页面滚动

细心的你可能发现:当我们在浏览京东往下滚动页面时,还会加载一些商品出来。没错,京东的部分查询结果只有将页面滚动至30个商品左右,才会加载剩余商品结果。这将会影响我们爬取信息的完整性。所以,我们需要考虑一种可将页面下滑的方法。

涉及到“页面下滑”,可以考虑使用浏览器。前面,我们都是使用无浏览器的方法抓取网页,在这里,鹦鹉先生将引入另外的一个库“selenium”。

“selenium”库可以控制谷歌浏览器,执行一些鼠标动作,如滑动、单击等。在此之前,我们需要在电脑上安装一个驱动包“chromedriver”,下载网址:

ChromeDriver Mirror

根据电脑安装的谷歌浏览器版本,选择对应驱动包,安装即可。

安装完成后,先上代码:

URL拼接、报头组装与前面相同,相关注释也已表明,这里,鹦鹉先生单独说一下各种元素取出的方法:

当我们获取到整个页面后,可使用一个“for”循环,将每一种商品对应的各种信息依次提取出来。

回到京东搜索结果页面,打开“开发者工具”,我们先来分析一下每一个商品在页面上的布局。

从鼠标指针高亮的结果来看,每个商品都被标签<li>属性class为“gl-item”的语句包裹。不使用其他属性的原因是,它们的值不具有普遍性。所以,每当我们想取出一个商品的所有信息,都在该<li>标签下寻找即可。所以,各项元素的取法:

  • 商品编号在<li>的“data-suk”属性中,使用“列表”取出;
  • 商品名、价格、店名,使用鼠标高亮可找到,前面已讲过定位“价格”的方法,这边不再赘述;
  • 商品网址在<a>标签的“href”属性中,使用“列表”取出。

最后,为了打印时更清晰,我们可以将这几个商品属性放在一个列表中:

在将“goods”print出来,就是我们想要的一个商品的所有信息!

Excel表格输出

使用Excel表格,我们可以相当方便地对数据进行一系列地分析。在Python中,我们可使用“xlwt”库,将所得结果统一写入一个Excel表格,再对数据进行必要地分析。这里先给出输出Excel的代码:

这里,鹦鹉先生使用了模块化的代码,将不同工作的代码进行分门别类。

在使用时,需要先实例化Excel:

在程序结尾输出环节,使用以下函数:

最后,如果需要改变表格输出路径,可在主函数最外层添加输出路径:

至此,一个可输出Excel的爬虫就大功告成!

爬爬淘宝

前面我们都是用京东举例,那淘宝可以爬到信息吗?当然可以!只不过对比京东有少许不同。

京东有一个“优点”——无需登录即可查找商品,但淘宝不可以,必须登录后才可使用。于是,“登录”是我们必不可少的步骤。但在写爬虫程序时,我们可以不用考虑跳转至登录页面的问题,因为只要未登录,在尝试搜索商品时就会自动跳转至登录页面。所以,爬取部分的代码基本与京东一样,我们只需在主程序开头改动一些地方。

爬虫的动作是很快的(除非使用了time.sleep之类的函数),如果涉及了登录步骤,就不方便我们填写登录信息。这里,鹦鹉先生推荐使用扫码登录,快捷高效。为了留给我们一些时间用于登录,我们可以几秒的暂停:

像在网页搜索栏里填信息的这个操作,我们可以专门设置一个变量,用于存放商品关键词:

接下来,我们开始讨论纯用浏览器的操作方法,将页面爬下来。

先来看看输入关键词。要打开浏览器并得到搜索结果页面,我们需要以下步骤:

  1. 输入网址;
  2. 找到搜索栏,填入商品关键词;
  3. 点击“搜索”按钮(或“回车”),等待结果返回。

当页面加载完全后,我们就可以爬取页面了。所以,代码如下:

爬取函数和京东的差不多:

至此,单页的淘宝爬虫已经完成,翻页爬虫可参考上面京东的爬虫,这里就不再介绍。

Python实战总结——把坑踩遍,让别人无坑可踩(二)相关推荐

  1. 【python实战】我在大学靠帮别人清理C盘赚够了伙食费

    本篇文章介绍一条大学时赖以生存的绝技,从不外传,今天为了涨粉一条也是拼了! 各位人才确定还不关注吗? 实现原理 对于非计算机人员来说,一旦C盘满了就会手足无措,删又不敢删,不删又不行. 所以一条在大学 ...

  2. python实战篇(五)---百度api实现车型识别

    十二年来,有笑泪,有阴晴,相伴一场,人来人往,只是日常.--蔡康永 前言 api全称为应用程序接口,说白了就是别人写好了一个可实现功能的函数接口,我们可以直接调用来实现功能,今天,我们一起来学习,用百 ...

  3. 整理了200多个Python实战案例,都有完整且详细的教程

    不管是学习什么语言,最终目的都是做项目.搜遍全网,整理了200多个Python实战的小项目,都有完整的代码,以及代码中用到的数据源等等.可以直接拿来用,也可以用于学习练手寻找思路. 告别枯燥,60秒学 ...

  4. python有趣的小项目-有趣的十个Python实战项目,让你瞬间爱上Python!

    前言 Python 是一种极具可读性和通用性的编程语言.Python 这个名字的灵感来自于英国喜剧团体 Monty Python,它的开发团队有一个重要的基础目标,就是使语言使用起来很有趣.Pytho ...

  5. python读取大文件的坑_Python读取大文件的坑“与内存占用检测

    python读写文件的api都很简单,一不留神就容易踩"坑".笔者记录一次踩坑历程,并且给了一些总结,希望到大家在使用python的过程之中,能够避免一些可能产生隐患的代码. 1. ...

  6. python项目开发实例-有趣的十个Python实战项目,让你瞬间爱上Python!

    前言 Python 是一种极具可读性和通用性的编程语言.Python 这个名字的灵感来自于英国喜剧团体 Monty Python,它的开发团队有一个重要的基础目标,就是使语言使用起来很有趣.Pytho ...

  7. python能做什么项目-这十个Python实战项目,让你瞬间读懂Python!

    前言 Python 是一种极具可读性和通用性的编程语言.Python 这个名字的灵感来自于英国喜剧团体 Monty Python,它的开发团队有一个重要的基础目标,就是使语言使用起来很有趣.Pytho ...

  8. 有趣的十个Python实战项目,让你瞬间爱上Python!

    前言 Python 是一种极具可读性和通用性的编程语言.Python 这个名字的灵感来自于英国喜剧团体 Monty Python,它的开发团队有一个重要的基础目标,就是使语言使用起来很有趣.Pytho ...

  9. python十个实例-有趣的十个Python实战项目,让你瞬间爱上Python!

    前言 Python 是一种极具可读性和通用性的编程语言.Python 这个名字的灵感来自于英国喜剧团体 Monty Python,它的开发团队有一个重要的基础目标,就是使语言使用起来很有趣.Pytho ...

最新文章

  1. C语言第二次博客作业---分支结构
  2. sql server 2014预览版发布
  3. Linux/unix主机环回地址的一些功用
  4. Chrome浏览器内部协议Chrome://收集
  5. java if else 过多_Java中if-else过多怎么解决
  6. PHP-开发环境搭建
  7. Python中__new__和__init__区别
  8. HDU_1541 Stars(树状数组)
  9. 【原】 图片预览 Image preview
  10. pcap文件linux怎么打开,pcap文件用什么打开
  11. HTML恶搞代码 无限弹窗(超简短)
  12. 元宇宙不是 PPT:已经发展到这个地步了
  13. 怎样做好软件测试经理
  14. vue 下载文件 前后端代码亲测有效
  15. c语言unit id是什么,小程序再升级之什么是UnitionID
  16. scratch小猫钓鱼 电子学会图形化编程scratch等级考试四级真题和答案解析2021-9
  17. 美国名校的与机器视觉相关的研发中心网址
  18. 和传统服务器对比,云计算主要有哪些优势?
  19. “心脏出血”漏洞可导致密码泄露
  20. oracle启用amm,使用ASMM和AMM时设置shared_pool

热门文章

  1. jetson tx2内核编译步骤与方法
  2. Go 区块链 Input Data 解析
  3. [译]JavaScript:更严格的相等
  4. UI自动化定位利器-xpath实战
  5. 称重仪表显示ol怎么解决_衡安称重显示仪表的使用和维护方法
  6. 软件测试 - 测试管理工具禅道
  7. 消灭星星java_怎么用java写消灭星星大概思路
  8. 利用GUI制作中学初等函数图像绘制器
  9. 从《围住神经猫》身上,你看到了什么
  10. 聊聊那些专为算法设计的模式——访问模式