数据分析 - 跨境电商爬虫成长记 之 第三篇:完整的爬虫工作环节有哪些

前言

大神 崔庆才《健壮高效的网络爬虫》中把爬虫分为网页爬虫、APP爬虫,又根据网页渲染方式、APP接口又进行了细分,想了解更深入的伙伴们可去参考原著。

由于工作的原因,本人搞得更多的是网页爬虫,其实在爬虫圈大多玩的也是网页爬虫;相对APP爬虫而言,网页爬虫的门槛更低,是大部分玩家的练手起点,本篇也是主要介绍网页爬虫的相关内容。

1.单线式、扣链式、散花式

根据采集动作不同分为单线式、扣链式爬虫。

(1)单线式爬虫

即一次request,其response就是目标数据;单线式爬虫十分常用如爬电商平台上产品介绍页、社交网站上文章内容、基金网站的基金详情页面等等。

(2)扣链式爬虫

从第1次request返回的response中得到第2次request的url,接着从第2次request返回的response中得到第3次request的url .... ,如此一环接一环扣下去。如“翻页”式爬虫,从上一页的response得到下一页的url。

(3)散花式爬虫

从第一步是第1个request返回的response中得到n多个目标url,第二步再爬取这n个url,也许还有第三、四步,可见散花式爬虫的工作量是扣链式的n倍,常见案例如在电商平台搜索关键词返回商品,再爬取所有商品的评论内容。

“翻页”式爬虫 特别说明

“翻页”式爬虫 在一定条件下即可做成单线式爬虫,也可做成扣链式爬虫。若翻页的url是有规律的,如url上某参数会带上页数,当页数为3即请求第3页,加上能预知总页数,就罗列出所有页的url,这样就可做为单线式;若翻页的ulr是无规律、或加密过的,那只能一页接着一页往下爬,那只能做扣链式。

2.完整爬虫工作环节

(1)单链式爬虫流程图

 (2)扣链式爬虫流程图

 (3)散花式爬虫流程图

从上3图可知,扣链式爬虫流程是单线式的重复n次,散花式爬虫流程是扣链式的重复n次。下面就以单线式爬虫为例,介绍其各个环节。

target pool :爬取目标合集,如一万某电商平台商品的ulr。

request:向目标server请求url,爬虫最核心的环节;为什么说是最核心,因为该环节要穿越“反爬”难关并从目标server带回想要的信息,至于“反爬”内容可参考上篇《挡住爬虫去路的3座大山》;按请求方法可分为直接请求、模拟浏览器两种模式。

response:即request返回的结果,一般是网页源代码,也注意其编码格式,如utf8。

verify:即检验response是否正确,这环节十分重要,但常被忽略掉,或有伙伴喜欢爬完target pool后再对所有response作检验,这样也是不高效的。verify必不可缺,最好安排在request完一个target url后接着就对该response作检验。verify方法一般有response状态码response内容两种;根据response状态码判断response是否正确是常用的方法,但也有缺陷,就有些狡滑地网站不但封禁你的爬虫request,还让response状态码为200(200表示成功返回);所以单靠response状态码还不够,必须再根据response内容进行判断。如果response内容为空、或有明显的被反爬、被封禁信息,如收到警告信息、或要输入验证码等,这都说明爬取失败。若爬取失败需把target url放回target pool ,重新再爬。

parse:即对reponse进行解析,通俗点就是从reponse提取想到的数据。实现parse的工具有许多,可参考上篇文章《python常用爬虫框架与工具》。parse环节还有另一重要功能,若提取不到想要的数据,但又十分肯定是有数据的,那说明response返回的信息不全面,需把target url放回target pool重爬。

storage:存储结果数据,除了保存被解析出来的目标数据,更重要的是保存好response内容(最好存档为html格式);为什么要保存response内容,因为网页内容是实时变动的,需要把当时response保存下来作为“凭证”,若有谁质疑你的目标数据,只要把html格式的response展示给他看就无话可说了。我刚开始搞爬虫没有保存response的习惯,就吃过这种网页内容发生改变而货不对版的哑巴亏,教训,教训。

致此,谢谢浏览本篇文章的读者,若有补充或建议,请留言,不胜感激。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值