假设给定一个自如租房的链接,本程序能够实现爬取该网页的价格。经过测试发现,这个程序并不适用于所有的自如租房链接,只适用于大部分链接。
① 打开该链接后,发现右上角显示该商品的价格是2890/月(季付价)。我们的目标是要提取2890这四个数字。
② 打开检查后,观察网页源代码,如下图,分析后得出价格数字2、价格数字8、价格数字9、价格数字0分别对应四个 i 标签,这四个 i 标签分别给出了不同的位置参数,还给出了同一个图片链接。
价格数字2对应的position1的值为-281.16,价格数字8对应的position2的值为-156.2,价格数字9对应的position3的值为-187.44,价格数字0对应的position4的值为-249.92。
打开给出的同一个图片链接后,得到如下图片。发现有0-9 十个数字。通过位置的规律发现,从第一个数字5的position值为0开始算起,往右的数字的position值依次减少31.24。
-281.16 ÷ 9 = -31.24 ;-156.2 ÷ 5 = -31.24 ; -187.44 ÷ 6 = -31.24 ; -249.92 ÷ 8 = -31.24
因此我们能够得到一个规律,这10个数字中,从左往右(索引从0-9)的位置序列为:[ 0, -31.24, -62.48, -93.72, -124.96, -156.2, -187.44, -218.68, -249.92, -281.16 ]
注意:每次刷新页面后图片的链接都会刷新,得到的图片都不一样,这些图片都有0-9 十个数字,不一样的地方在于这10个数字的排序不同。通过观察多次请求的源码发现,位置序列的值是不变的。所以可以通过获取价格数字的位置值后,对比位置序列的值来确定每个价格数字在位置序列中的索引。
此处写代码的思路:
1 先请求图片,然后把图片保存到本地。
2 使用验证码识别接口来识别下载到本地的图片。
3 识别得到图片上的10个数字后,可以通过每个价格数字在位置序列中的索引把价格数字给取出来。
选取的正则表达式代码块
原文:https://www.cnblogs.com/weifeng1998/p/13228147.html