00:00
哈喽,大家好,我是小夏,本期视频的话呢,我们来聊一个爬虫开发中非常实际的问题,在网站改版以后,原来的爬虫突然失效了,我们该怎么办?很多爬虫刚开始开发完成的时候都是能够正常运行的,但网站只要修改了DOM结构、CSS类名和页面布局,那么原来的那些选择器就可能会失效。传统的做法的话呢,是开发人员发现了异常之后再去检查页面,然后重新定位元素,修改选择器,测试和重新发布。今天我会用一个已经能够正常运行的爬重先展示正常的一个结果,然后故意让其中的一个修改器失效,模拟网站改版。在实际测试一下script studio和self heading, 看你能不能把它给修改回来。然后现在我们来到的是一个。图书列表的一个网页,为了整个过程的话呢,是能够公开复现的,我这里用的是book to script, 这呢,这个的话是专门用于网页抓取、学习和测试的一个DEMO网站。当前列表的话,我们可以看到有很多的突出,那么每一本的话呢,它都是有标题、价格、库存等内容的。我之前的话呢,在scras studio里面的话呢,已经是创建好了针对这个页面的一个数据采集器。
01:22
就是我们来到的是量数据的这个官网页面啊,这是我登录过后的一个控制台,我们来到帕器。那么目前所在这个的话呢,就是我以前是已经一个是正常的。是可以正常运行的一个数据采集的一个发际线。然后我们把它运行一下,看一下结果。
02:03
可以看到在在输出这一栏的话。我们可以看到当前盘通的话是正常工作的,看这里的标题的话,也就是我们的title是已经成功拿到,拿到了一个标图出的一个标题,我们可以对比一下。那么的话都是没有问题的,所以的话,我们现在可以先记住这样的一个状态,就是目标的网站正重的爬虫的话也是正常书名正常字段的话,也都是全部正常返回。这是我们在修改前的一次正常运行。那么接下来的话,我来故意模拟一次网站的改版,实际网站改版的时候,很常见的一种情况就是原来的CSS选择器是不能够匹配目标元素的,我这里的话呢,是不会修改整个爬虫,只负责修改一个负责提取title的一个选择器。
03:09
那我们找到一个。那说的页面代码。好,我们对其进行了一个修改。我这里的话呢,是在原来的选择器后面加上了一个网页中。并不存在的一个class,现在这个选择题理论上来说的话是已经不会找到原来的书名元素了,这就相当于模拟网站改版以后就爬虫还在使用原来的页面的结构。修改之后,然后我们来进行一次运行。
04:00
可以看到页面本身的话还是能够正常访问的,其他字段也可也是可以继续的正常返回,但是title的话呢,目前的话是已经拿不到正常值了,这边的话是直接为空了,这就是我们模拟的一个网站改版的一个很简单的一个场景,对于业务来说的话,这种情况其实比整个程序直接报错更麻烦,因为任务看起来的话是在正常的运行,但是部分的字段是已经悄悄的失效了。接下来的话,我不会手工的话把这个选择器给改回来,而是我们直接使用量字句的这个CF hanging的话。啊,我们点击。这个海,你。这里的话,我们打开以后,官方的说明的话,就让我们输一个自然语言要求的一个文本。S hand的话支持需要通过自然语言描述来修复我们的问题,然后我这里的话呢,是直接告诉他开头字段因为选择器的变化已经返回了。
05:06
已经返回,只是为空,然后我们只需要修复title的话,其他字段是完全保持不变的。此时的话。这些AI是已经开始了修复。在官方的说明文档当中的话,这个重构的结构最长可能是需要15分钟的,具体的话是看你那个工程量,这里的话可能我们就需要等个一两分钟就好了。这里我们可以看到CF焊的话,已经是生成了修复的一个方案。我们这里的话并不是直接修改,强制上线,而是先给出代码的差异让我审核。
06:03
我可以选择一个接受和拒绝的,这对生产环境比较重要,因为AI生成的修改仍需要确认并是否符合自己的业务的一个预期。那么这里的话是选择接受修改。选择C的话,就等于我们的话是保存到了一个生产环境,但我们现在的话是不保存生产环境,我们先测试运行一下。那么可以看到的话。AI的话是已经self he的话,那数记的这I已经是帮我们已经是完全修复成功了,可以到原来的标题的话是已经回来了。而且价格库存其他字段的话是仍然保持正常的,所以整个过程的话就是正常抓取选择器失效,然后title头返回来,异常S看内的话分析,然后再生成修改,然后再运行的话,然后数据进行恢复,然后我们可以它一它如果现在是没问题的,我们可以看到,我们可以将让它保存到一个生产的环境。
07:17
除了刚才手动使用的self hanging scriptra studio还提供了auto selfing, 点击我们的更多,我们可以在这里看到auto self hand, 那我们点击它,那么它的话呢,是可以根据任务的成功率,然后输入的数量、触发频率和冷却时间等条件配置自动修复的一个规则。也就是说在长期运行的采集任务里,不一定需要等开发人员手动发现了问题之后才能够开始处理。不过我像关键的业务,那么我个人的话还是更倾向于先审核修改,然后再决定是否保存到生产的一个环境里。
08:05
那么现在我们把整个过程放在一起看,Selff汉尼的话解决的重点其实不是第一次怎么写一个爬虫,而是上线以后长期维护的一个问题。传统情况下,如果网站修改了代目结构或CS选择器,开发人员需要先发现一数据的异常,然后再重新检查网页定位失效的选择器,修改代码测试,然后重新发布。那么本次我是故意让title多的选择器失效,可以看到字段以后马上无法正常返回。使用Self handney以后,我只需要使用自然语言描述哪个字段错了问题,那么AI可以生成相应的代码修改。同时它并不会直接强制上线,而是可以先审核代码的一个地铺,然后再运行确认结果,最后才保存到我们的生产。对一个只有几个跑通的小项目来说,手动修改一个选择器可能是并不困难的,但是如果您的团队长期维护几十个或者更多的采集任务网站,不断调整结构以后,这里重复的定位和修复工作,那么就会形成一个比较鲜明的个。
09:05
维护成本,所以我觉得self honey的话,它会更适合解决的是这种长期重复的网站变化适配问题,而不是完全替代开发者。那如果屏幕前的你也想体验量数据的这项功能,我会把专属的链接放在视频的简介下方,注册的时候,注册官网的时候,请大家尽量的话使用工作邮箱或者自己长期使用的常用邮箱,避免QQ邮箱的视频下方的话呢,是会有促销的代码的,然后放在了我的专属链接里。后续结账的话呢,是会有优惠的哦,那么本期视频的话呢,就是以上这些,谢谢大家。
我来说两句