前情提要:前面两篇老猿简单给Web Scraper配置了一个可以抓取时光网电影热度排名的sitemap和讲解了Web Scraper的运行原理,算是普及了一下,各位看官跟着操作一篇,应该对Web Scraper和Start URL、Selector有个初步认识了吧。本篇开始就以问题形式来对Web Scraper进行深入讲解。
上一篇我们配置的Sitemap,只能抓取第一页,不能翻页不能抓第二页,这篇就来聊下Web Scraper如何翻页。
实现翻页只需要修改”Start URL”就可以搞定。我们上一篇在Start URL里 直接填的是首页地址。如下图:
因为这没有告诉Web Scraper如何访问第二页,第三页,所以要修改一下Start URL,Web Scraper规定了一个翻页规则的,有几种写法,要根据抓取网站的URL规律的写, 请看下面。
规则一:
第一页: ‘http://example.com/page/1’
第二页: ‘http://example.com/page/2’
第三页: ‘http://example.com/page/3’
如果要抓取网站的第一页,第二页,第三页是如上形式,那么Start URL翻页就写成 http://example.com/page/[1-3]
中括号里表示从第一页翻到第三页。
规则二:
第一页: ‘http://example.com/page/001’
第二页: ‘http://example.com/page/002’
第三页: ‘http://example.com/page/003’
Start URL翻页就写成 http://example.com/page/[001-3]
中括号里表示从001 翻3页到 003
规则三:
第一页: ‘http://example.com/page/0’
第二页: ‘http://example.com/page/10’
第三页: ‘http://example.com/page/20’
Start URL翻页就写成 http://example.com/page/[0-3:10]
中括号里表示从第1页开始 翻3三页,每页要乘10
Web scraper对这个规则三这种翻页方式的支持好像有问题,豆瓣影评是这种的URL格式,我测试过,翻页不成功。所以遇到这种翻页格式还是要用其它办法。
以上我们只举了翻3页的例子,如果你想抓50页,那就要把上面的3改成50了,提示你要手动翻一翻看看抓取的网站是否有50页,不要写超出了。
基于以上翻页规则,我们来看看时光网的URL是符号上面那个规则呢?
我们进入 欢迎首页,把页面拉到最下面,点击第二页,第三页看看它的URL规律情况,如下图:
第一页的URL是:
http://www.mtime.com/hotest/index.html
也可以看着URL是:
http://www.mtime.com/hotest/index-1.html
第二页是:
http://www.mtime.com/hotest/index-2.html
第三页是:
http://www.mtime.com/hotest/index-3.html
所以翻页规则符合上面的规则一,应该把Start URL改写成:http://www.mtime.com/hotest/index-[1-3].html
如果是翻50页,就是:
http://www.mtime.com/hotest/index-[1-50].html
Web Scraper翻页就是这样的,要修改Start URL。好了,现在你重新Create sitemap再像上一篇一样重新配置一次,试试看能不能翻页抓取了吧。
PS:当之前运行可以的翻页不起作用时,要去检查要抓取翻页URL是否变了,因为对方网站改版,页面优化之类的,可能会把URL给改变了,这时要重新去找翻页规律。
上面介绍的是根据URL的规则来翻页,有些网页翻页是ajax的,这种方法就行不通了,需要使用另外的翻页方法,下一篇再来介绍。
Web Scraper系列文章:

我的公众号:猿人学 Python 上会分享更多心得体会,敬请关注。
***版权申明:若没有特殊说明,文章皆是猿人学 yuanrenxue.con 原创,没有猿人学授权,请勿以任何形式转载。***
豆瓣的翻页有规律可循,[0-50:25]这种即可
在豆瓣top250排行榜中,翻页url为:https://movie.douban.com/top250?start=0;其中需要加上start参数。而过滤条件为:https://movie.douban.com/top250?start=[0-249:25];可能有不同得答案,但经过测试,这条规则是可以正确实现翻页得。