第1页判断

解释一下第1页内容发生变更?这个逻辑判断。程序在每轮抓取作业开始前,先获取招聘网职位列表第一页的html,然后跟上次抓取时获取到的第一页html进行判断,如果其内容等同,说明招聘网没有新的职位信息,那么避免多余的作业,抓取程序会直接进入休眠一段时间后再次进行这个判断,直到发现内容发生变更后才会进行作业。

那么如何判断内容是否等同?最简单暴力的方法是每次直接保存完整的html字符串,然后比较字符串是否相等。

这样做虽然也可以,但不是很稳妥,有两个问题:

  1. 列表页并不是静态网页,是动态生成的网页。我们不知道网页是如何编写的,如果页面中含有动态参数,可能会出现内容没发生变化但html内容发生变化的情况,判断不够精确。
  2. html代码相对来说还是有点大小的,虽然对于现在的计算机配置来说,写入内存的话所需时间可以忽略不计,但毕竟要保证重启之后程序也正常运转,所以如果用这种方法,html的内容也要写入数据库,这样的话还是有一点点开销。

所以这个方法虽然可用,但不是最好的方法,PASS掉。

为了解决这两个问题,我采用的是提取html中职位的关键信息(标题,id,发布日期等),组合成一个字符串后,计算那个字符串的hash值。比较时直接比较hash值是否相等,这样一来页面内容发生变化的依据就不再是html本身而是职位列表的内容了,而计算出来hash值相对字符串来说小很多,可以最大程度地减小写入数据库的开销。

代码没什么技术含量,就不发出来了。

results matching ""

    No results matching ""