前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >不用代码,采集知乎、微博、微信、58系列之二:实现无限页面采集

不用代码,采集知乎、微博、微信、58系列之二:实现无限页面采集

作者头像
沉默的白面书生
发布2018-05-07 14:40:46
1.2K0
发布2018-05-07 14:40:46
举报
文章被收录于专栏:全栈数据化营销

之前的文章中,详细地介绍了web scraper的安装以及完整的采集流程,但是也只是局限在一个页面采集,那么如果我要实现多页面采集呢,这要如何实现呢?

首先我们先来看看有哪些多页面形式呢?我们在采集多页面的时候,首先要做的就是观察页面在翻页的时候,页面链接是否发生变化,这里主要可以分为3种形式来讨论:

1、URL 参数分页(比较规整方式),URL 中带有分页的 page 参数的,如知乎,知乎在很多页面的page参数都是非常规律的,就拿上个页面的链接来看,原始的链接是这样的:

但是当我们点击页面底下下的翻页的数字时:

链接就会发生这样的变化,第一页,第二页、第三页、第N页:

我们会发现,当我们翻到第N页的时候,page后面的参数也是N,都是呈现规律式的变化,像这种分页模式的处理就很简单了。主要采用的方法是:直接在创建sitemap时,Start URL中就可以带上分页参数,写成这样:

https://www.zhihu.com/people/zhang-jia-wei/followers?page=[1-73255]

1-73255,指的是起始页是1,最后页是73255,并且用中括号[]来表示。这样就创建了关于知乎的多页面采集。

其实还有一种情况类似规律性页面分布,但是又有所不同,我们就以豆瓣为例,来看下豆瓣的链接,下面分别是第一页、第二页、第三页、第四页、第10页的页面链接:

我们可以看到第一页时,start的参数是0,第二页的start参数是25,第三页的start参数是50,以此类推,发现每个页面参数都是相差25的,而不是知乎的1,这个时候我们的分页链接可以写成:

https://movie.douban.com/top250?start=[0-225:25]5&filter=

start的参数依然是用中括号括起来的,0表示起始页的start值,225表示最终页的start参数值,25表示每个页面的start值的距离,并且用冒号:来链接起来,表示的就是采集start值为0-225,并且每个页面距离为25的页面的数据。

2、上面介绍的其实就是规律分页的形式,有明显的规律可循,这也是绝大多数网站采用的方式,但是这几年越来越多的网站为提高安全性和加强阅读体验,采用了诸如“点击阅读更多”“下拉加载”等不规律的分页方法,例如it桔子网(www.itjuzi.com)和麦淘网(www.maitao.com),那这种页面要怎么采集呢?

事实上这种页面采集还是比较简单的。先来看it桔子,就以在it桔子中搜索“亲子”得到的结果为例,页面链接如下。

(https://www.itjuzi.com/search?word=%E4%BA%B2%E5%AD%90)

在观察页面的时候,我们看到it桔子是以“点击加载更多”来实现翻页的:

这个时候我们就需要在一级选择器将type选项改为“element click”,选择后,一级选择器页面就出现了如下的变化:

Click selector:点击选择器,就是选择需要点击翻页的地方,因为我们这里需要点击“加载更多”才能实现翻页,那操作就是点击select后,将鼠标移动到“加载更多”,点击后选择Done selecting即可。

Click type:指的就是点击类型,里面有两个选项:点击一次(click once)还是点击多次(click more),如果只点击一次就能够显示全部内容,那就选择点击一次,如果是需要多次点击才能显示全部内容,那就选择点击多次。这里因为需要多次点击,那就选择click more Click element

uniqueness:指的是当出现什么不一样的时候停止翻页,分别有不一样的文字,不一样的html,不一样的html+文字,不一样的css样式变化,这里我们一般都会选择最后一种:不一样的css样式变化(unique css selector)

到此点击加载的翻页就设置完成了,不需要再去修改链接了。

那么还有一种类似于今日头条、卖淘网网站滚动鼠标就会加载内容的翻页形式要怎么在web scraper实现翻页采集呢?

3、鼠标滚动加载内容的网站实现翻页采集,这里就以麦淘网为例,链接:

http://m.maitao.com/classify/null?ids=1,这是手机链接,这里需要说明的是,当一些网站网页端反爬虫比较强大的时候,我们通常会选择手机端来采集。

因为是鼠标滚动后自动采集,我们只需要将一级选择器页面中的type设置成element scroll down,发现这时候页面并不像选择element click那样出现很多变化,说明只需要将type改为element scroll down就可以实现鼠标滚动采集了,如下图所示:

至此,就介绍完了常见的绝大多数的翻页采集,此时就可以采集非常多的翻页网站了。但这并不是全部,当你在采集麦淘网的时候,在选择元素的时候,会发现很多内容是选不上的,这个时候就需要用到自动选择和子父类的概念,下次会介绍。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018.01.04 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档