采集网站网页集:判断连续页面的办法(其一)

假设有时候基于工作的原因,需要采集某个网站指定网页集,如何识别出连续网页是个值得深入思考的问题。为了简化问题,优化解决问题的思路,此篇暂不讨论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语言种的链表,“外表”看起来相似序号无关联性,但是从存储地址来看却是紧紧相连的。

对于这种存储地址关联的连续网页集合,普通法则似乎完全失效。但有一点肯定的是,虽然它们参数繁多冗长,却仍然是“规则排列”的。也就是说,还可以使用正则表达式匹配判断一二。然而这里还有个问题,即使采用正则表达式,匹配到相同或相似规则的网址,如何确定是连续网页集的结尾?因为事实上,它们是搜索引擎呈现的超大数目网页地址集之一。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值