前情提要:前面兩篇老猿簡單給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.com 原創,沒有猿人學授權,請勿以任何形式轉載。***