採集網站網頁集:判斷連續頁面的辦法(其一)

假設有時候基於工作的原因,需要採集某個網站指定網頁集,如何識別出連續網頁是個值得深入思考的問題。爲了簡化問題,優化解決問題的思路,此篇暫不討論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這兩種規則的連續網址集,除了使用特定具體的規則外,還可以採用“模糊籠統”的正則表達式匹配的方式來判斷。

然而最爲奔潰的是以下這種。

(5-a)https://image.***.com/search/detail?ct=503316480&z=0&ipn=d&word=%E9%A3%8E%E6%99%AF&step_word=&hs=2&pn=5&spn=0&di=181500&pi=0&rn=1&tn=baiduimagedetail&is=0%2C0&istype=0&ie=utf-8&oe=utf-8&in=&cl=2&lm=-1&st=undefined&cs=2346282507%2C2171850944&os=1377445141%2C2277854446&simid=3553638952%2C469919429&adpicid=0&lpn=0&ln=1816&fr=&fmq=1584460086211_R&fm=&ic=undefined&s=undefined&hd=undefined&latest=undefined&copyright=undefined&se=&sme=&tab=0&width=undefined&height=undefined&face=undefined&ist=&jit=&cg=&bdtype=0&oriquery=&objurl=http%3A%2F%2Fattach.bbs.***.com%2Fforum%2F201311%2F17%2F174124tp3sa6vvckc25oc8.jpg&fromurl=ippr_z2C%24qAzdH3FAzdH3Fooo_z%26e3B4t7t_z%26e3Bv54AzdH3Fu5674_z%26e3Brir%3F451%3Detjopi6jw1%26pt1%3D89lcm9c%26jxp6w%3Drw2j%25nD8%26561j6pyrj%3D8&gsm=1&rpstart=0&rpnum=0&islist=&querylist=&force=undefined

(5-b)https://image.***.com/search/detail?ct=503316480&z=0&ipn=d&word=%E9%A3%8E%E6%99%AF&step_word=&hs=2&pn=6&spn=0&di=165440&pi=0&rn=1&tn=baiduimagedetail&is=0%2C0&istype=0&ie=utf-8&oe=utf-8&in=&cl=2&lm=-1&st=undefined&cs=3468343303%2C1740006892&os=1420205015%2C434431344&simid=4084544577%2C692849594&adpicid=0&lpn=0&ln=1816&fr=&fmq=1584460086211_R&fm=&ic=undefined&s=undefined&hd=undefined&latest=undefined&copyright=undefined&se=&sme=&tab=0&width=undefined&height=undefined&face=undefined&ist=&jit=&cg=&bdtype=0&oriquery=&objurl=http%3A%2F%2Fwww.***.cn%2Fimg.php%3Fpic1.***.com%2Fwallpaper%2F2017-12-14%2F5a3241ed5278a.jpg&fromurl=ippr_z2C%24qAzdH3FAzdH3Fooo_z%26e3B8-jyj_z%26e3BvgAzdH3F%25E0%25BE%25bE%25E9%25Bb%25BD%25E0%25lA%25b9%25El%25An%25bE%25Em%25ll%25AF_z%26e3Bip4s&gsm=1&rpstart=0&rpnum=0&islist=&querylist=&force=undefined

你能看清其中代表連續性的規則邏輯在哪裏?幾乎看不到規則的合理性。雖然上面可以看到,很多參數使用連接符“&”串聯在一起,但是單從分頁來看完全看不出來後者是前者的下一頁。可以毫不誇張的說,是連續性判斷邏輯的“災難”。這個有點像C語言種的鏈表,“外表”看起來相似序號無關聯性,但是從存儲地址來看卻是緊緊相連的。

對於這種存儲地址關聯的連續網頁集合,普通法則似乎完全失效。但有一點肯定的是,雖然它們參數繁多冗長,卻仍然是“規則排列”的。也就是說,還可以使用正則表達式匹配判斷一二。然而這裏還有個問題,即使採用正則表達式,匹配到相同或相似規則的網址,如何確定是連續網頁集的結尾?因爲事實上,它們是搜索引擎呈現的超大數目網頁地址集之一。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章