Python实战总结——把坑踩遍,让别人无坑可踩(二)
翻,翻,翻
至此,我们已经写出了第一个爬虫程序,但功能还是比较单一。所以接下来,我们将更进一步,为爬虫添加翻页功能!
就爬虫本身而言,我们当然是希望爬回的信息越丰富越好,所以,如果爬虫只能爬一页的内容,显然是不符合我们的预期的。拿京东举例,商品结果页面不可能只有一页(除非精准搜索或小众商品):
所以,我们需要想方设法,让页面翻动起来。就上一个爬虫程序而言,爬取功能方面是没问题的。
“翻页”这一动作,其实可以有两种思路。在讲思路之前,我们先来看看为什么可以翻页。
如果我们想访问指定的网站,我们只需给出网页的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之类的函数),如果涉及了登录步骤,就不方便我们填写登录信息。这里,鹦鹉先生推荐使用扫码登录,快捷高效。为了留给我们一些时间用于登录,我们可以几秒的暂停:
像在网页搜索栏里填信息的这个操作,我们可以专门设置一个变量,用于存放商品关键词:
接下来,我们开始讨论纯用浏览器的操作方法,将页面爬下来。
先来看看输入关键词。要打开浏览器并得到搜索结果页面,我们需要以下步骤:
- 输入网址;
- 找到搜索栏,填入商品关键词;
- 点击“搜索”按钮(或“回车”),等待结果返回。
当页面加载完全后,我们就可以爬取页面了。所以,代码如下:
爬取函数和京东的差不多:
至此,单页的淘宝爬虫已经完成,翻页爬虫可参考上面京东的爬虫,这里就不再介绍。
Python实战总结——把坑踩遍,让别人无坑可踩(二)相关推荐
- 【python实战】我在大学靠帮别人清理C盘赚够了伙食费
本篇文章介绍一条大学时赖以生存的绝技,从不外传,今天为了涨粉一条也是拼了! 各位人才确定还不关注吗? 实现原理 对于非计算机人员来说,一旦C盘满了就会手足无措,删又不敢删,不删又不行. 所以一条在大学 ...
- python实战篇(五)---百度api实现车型识别
十二年来,有笑泪,有阴晴,相伴一场,人来人往,只是日常.--蔡康永 前言 api全称为应用程序接口,说白了就是别人写好了一个可实现功能的函数接口,我们可以直接调用来实现功能,今天,我们一起来学习,用百 ...
- 整理了200多个Python实战案例,都有完整且详细的教程
不管是学习什么语言,最终目的都是做项目.搜遍全网,整理了200多个Python实战的小项目,都有完整的代码,以及代码中用到的数据源等等.可以直接拿来用,也可以用于学习练手寻找思路. 告别枯燥,60秒学 ...
- python有趣的小项目-有趣的十个Python实战项目,让你瞬间爱上Python!
前言 Python 是一种极具可读性和通用性的编程语言.Python 这个名字的灵感来自于英国喜剧团体 Monty Python,它的开发团队有一个重要的基础目标,就是使语言使用起来很有趣.Pytho ...
- python读取大文件的坑_Python读取大文件的坑“与内存占用检测
python读写文件的api都很简单,一不留神就容易踩"坑".笔者记录一次踩坑历程,并且给了一些总结,希望到大家在使用python的过程之中,能够避免一些可能产生隐患的代码. 1. ...
- python项目开发实例-有趣的十个Python实战项目,让你瞬间爱上Python!
前言 Python 是一种极具可读性和通用性的编程语言.Python 这个名字的灵感来自于英国喜剧团体 Monty Python,它的开发团队有一个重要的基础目标,就是使语言使用起来很有趣.Pytho ...
- python能做什么项目-这十个Python实战项目,让你瞬间读懂Python!
前言 Python 是一种极具可读性和通用性的编程语言.Python 这个名字的灵感来自于英国喜剧团体 Monty Python,它的开发团队有一个重要的基础目标,就是使语言使用起来很有趣.Pytho ...
- 有趣的十个Python实战项目,让你瞬间爱上Python!
前言 Python 是一种极具可读性和通用性的编程语言.Python 这个名字的灵感来自于英国喜剧团体 Monty Python,它的开发团队有一个重要的基础目标,就是使语言使用起来很有趣.Pytho ...
- python十个实例-有趣的十个Python实战项目,让你瞬间爱上Python!
前言 Python 是一种极具可读性和通用性的编程语言.Python 这个名字的灵感来自于英国喜剧团体 Monty Python,它的开发团队有一个重要的基础目标,就是使语言使用起来很有趣.Pytho ...
最新文章
- C语言第二次博客作业---分支结构
- sql server 2014预览版发布
- Linux/unix主机环回地址的一些功用
- Chrome浏览器内部协议Chrome://收集
- java if else 过多_Java中if-else过多怎么解决
- PHP-开发环境搭建
- Python中__new__和__init__区别
- HDU_1541 Stars(树状数组)
- 【原】 图片预览 Image preview
- pcap文件linux怎么打开,pcap文件用什么打开
- HTML恶搞代码 无限弹窗(超简短)
- 元宇宙不是 PPT:已经发展到这个地步了
- 怎样做好软件测试经理
- vue 下载文件 前后端代码亲测有效
- c语言unit id是什么,小程序再升级之什么是UnitionID
- scratch小猫钓鱼 电子学会图形化编程scratch等级考试四级真题和答案解析2021-9
- 美国名校的与机器视觉相关的研发中心网址
- 和传统服务器对比,云计算主要有哪些优势?
- “心脏出血”漏洞可导致密码泄露
- oracle启用amm,使用ASMM和AMM时设置shared_pool