使用python爬虫时,遇到多页,需要翻页,下一页时怎么处理
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用python爬虫时,遇到多页,需要翻页,下一页时怎么处理相关的知识,希望对你有一定的参考价值。
参考技术A 例子如下:item1 = Item()
yield item1
item2 = Item()
yield item2
req = Request(url='下一页的链接', callback=self.parse)
yield req
注意:使用yield时不要用return语句。本回答被提问者采纳
小白30分钟学会网页采集基础教程
首先,以某个多页(需要自动翻页)表格数据的采集为例,先演示一次网页采集的完整的过程:
演示这里使用的是八爪鱼,依次点击表格某一行的每个字段,可以自动识别出其他所有数据行,并自动创建循环列表;点击翻页按钮,选择“循环点击下一页”动作,就能自动创建翻页循环。
网页信息爪取相关的工具有很多,有需要代码配合使用的,也有几乎不用代码的。其实实现网页采集所用的代码越少,效率越高,维护起来越简单。今天以八爪鱼为例,演示这个工具的一些基础知识:
1:基础操作
1.1 新建任务
1.2 导入规则
制作好的规则是可以导出和导入的。规则文件是.otd后缀的文件,在安装了八爪鱼的系统中,双击可以启动导入;也可以在软件里批量导入。
1.3 切换浏览器内核(手动或自动)
1.4 定时自动启动演示
在电脑上将任务设置完成并提交到云服务执行云采集之后,可以关闭软件,关闭电脑进行脱机采集,真正的实现无人值守。除此之外云采集通过云服务器集群的分布式部署方式,多节点同时进行作业,可以提高采集效率,并且可以高效的避开各种网站的IP封锁策略。
2:基本步骤
2.1 打开网页
点击查看“打开网页”步骤的动图演示
在第一步填写网址的文本框中,可以设置上万条网址,实现批量操作。
在分布式云采集中,单线程单机采集完成1个网页的时间,分布式可完成6-10个网页抓取,相当于6-10台电脑同时运行;
在分布式私有云中,这个速度可以提高到30~100倍。相当于1小时完成最慢30个小时最快100个小时的采集量。换成数值的话,单机采集1万数据的时间,私有云可以完成约30万~100万。
2.2 点击元素(和自动循环翻页演示)
点击查看“点击元素”步骤的动图演示
在内置浏览器中点击网页任意位置,都可以选择“点击”操作,在采集流程中自动生成一个点击步骤。
如果,自动生成的点击步骤不能准确点击到元素,也可以手动修改Xpath,像上面演示中,在“自定义”选项中进行修改。
XPATH的使用方法可以参考另一篇文章《八爪鱼在哪里设置xpath》
2.3 提取数据
动图演示某汽车销售公司列表网页数据的抓取过程
演示中,我们需要自动地提取出列表中,每一个公司的信息。
当点击公司名称的时候,程序自动识别出其他公司(其他公司名称底色加深了),并提示“其他15个同类元素”,选择“选中全部”操作,就能自动为每个公司的数据生成循环自动处理。
不妨找一个类似的网页试试看,比如汽车之家等网站。
2.4 自动输入文本
网页中,一般文本框都是input元素或者textarea元素。如果点击某个文本框,没有“输入文字”操作可以选择,不妨多试几次,可能是没有点准这个INPUT 或 textarea元素。
点击查看“输入文本”步骤的动图演示
还可以设置一个文本列表,自动循环批量输入文本
点击查看循环“输入文本”步骤的动图演示
2.5 鼠标悬停
有些动态加载,鼠标放上才会加载并显示内容的情况,就需要“鼠标悬停”功能来实现。如下图:
动图演示淘宝动态加载店铺评分的采集
淘宝网搜索结果中,店铺三项评分是鼠标放上动态加载的,ajax延时设置为1秒,如果本地网络条件不好,1秒不够加载的话,可以设置的更长一点。
鼠标悬停不是常用的功能,可能不是特别好理解,建议感兴趣的话,拿来淘宝网页实际模仿一下。
2.6 判断条件
点击查看“判断条件”步骤的动图演示
演示中循环打开两个网页,分别是“百度网”和“新浪网”。
手动添加一个“判断条件”模块,设置上条件,使程序自动区分不同的网站。
以上就是常用的几种基本步骤。对于新手入门学习,一般可以满足需求了。
抓到的数据还可以直接进行可视化分析、文本语义分析,让文字“说话”:
更多实例演示,我都放在另一篇文章里了:《一大波可视化网页采集完整过程记录 新手也能一看就会》
以上是关于使用python爬虫时,遇到多页,需要翻页,下一页时怎么处理的主要内容,如果未能解决你的问题,请参考以下文章
selenium模块跳过用户名密码验证码输入,加载浏览器标签和cookie,进行翻页爬虫多页动态加载的数据(js)