假設有時候基於工作的原因,需要採集某個網站指定網頁集,如何識別出連續網頁是個值得深入思考的問題。爲了簡化問題,優化解決問題的思路,此篇暫不討論POST方法傳遞頁碼參數的方法,僅關注GET方法。
我們經常看到各種規則的url網址,比如:
(1-a)https://www.***.com/weimei/49958.html
(1-b)https://www.***.com/weimei/49958_2.html
(2-a)https://www.***.top/MeiNv/2020-03/10072360.html
(2-b)https://www.***.top/MeiNv/2020-03/10072360p2.html
(3-a)http://aipai.***.com.cn/activity_album/detail/622865/#p=1
(3-b)http://aipai.***.com.cn/activity_album/detail/622865/#p=2
以上三種是比較常見的規則的網頁集。
第1、2種比較好劃分,以首頁爲基準,去掉文件擴展名.html,然後判斷後續url網址是否以該基準爲前綴來確定是否連續頁面。第3種難度稍高,沒有文件擴展名格式化的樣式,無法像前兩者直接抽象出共性,只能轉化爲具體的規則。
(4-a)https://www.***.com/v/79861-1-0.html
(4-b)https://www.***.com/v/79861-1-1.html
第4種雖然具有格式化的樣式,也具有文件擴展名,依然不能像第1、2種那樣輕易抽象程度高。像第3、4這兩種規則的連續網址集,除了使用特定具體的規則外,還可以採用“模糊籠統”的正則表達式匹配的方式來判斷。
然而最爲奔潰的是以下這種。
你能看清其中代表連續性的規則邏輯在哪裏?幾乎看不到規則的合理性。雖然上面可以看到,很多參數使用連接符“&”串聯在一起,但是單從分頁來看完全看不出來後者是前者的下一頁。可以毫不誇張的說,是連續性判斷邏輯的“災難”。這個有點像C語言種的鏈表,“外表”看起來相似序號無關聯性,但是從存儲地址來看卻是緊緊相連的。
對於這種存儲地址關聯的連續網頁集合,普通法則似乎完全失效。但有一點肯定的是,雖然它們參數繁多冗長,卻仍然是“規則排列”的。也就是說,還可以使用正則表達式匹配判斷一二。然而這裏還有個問題,即使採用正則表達式,匹配到相同或相似規則的網址,如何確定是連續網頁集的結尾?因爲事實上,它們是搜索引擎呈現的超大數目網頁地址集之一。