python爬虫入门 ✦ 自如租房CSS反爬案例

此博客仅为我业余记录文章所用,发布到此,仅供网友阅读参考,如有侵权,请通知我,我会删掉。

项目环境:Windows10 +Python3.6+Pycharm2019 + Tesseract ORC**
文末附完整代码链接。

请提前安装以下工具与python模块,高考要考

安装Tesseract OCR(Optical Character Recognition , 光学字符识别)引擎,链接:https://github.com/tesseract-ocr/tesseract/wiki,然后安装python模块的PIL + pytesseract

本人反反爬全部文章: 京东爬虫大众点评woff字体反爬有道翻译。。。

前言:本次案例网站用到的反爬手段是css Sprite,俗称雪碧图css Sprite 细解链接
在这里插入图片描述

1.分析网站反爬手段

1.1 看下图
在这里插入图片描述
1.2 打开Chrome的开发者工具,鼠标移动到展示出来的价格处,可以看到价格。等等??我看到的是什么?看画框的地方,哦!价格是一张png格式的图片。
在这里插入图片描述
1.3 直接访问png格式的图片的url在这里插入图片描述
1.4 访问png的url后,看到一张图片,是0-9共10位阿拉伯数字,但数字的排序好像不太对劲。在这里插入图片描述
1.5 咦,好像有点眉目了。
在这里插入图片描述
1.6 通过分析,得出结论:图片的偏移量是以-21.4递减px的。so,,没错,这就是本次解题的思路。
至此,该爬虫案例已经完成85%。
在这里插入图片描述

2. 思路 + 解析方法

上边我们已经知道了数字生成的规律。所以现在就说一下怎么去获取数字。

思路

2.1 利用Tesseract ORC 光学字符识别工具,获取png图片的数字。

2.2 建立一个基准的图片偏移量列表,用以与字符串对应生成{图片偏移量:数字}字典。

offsets = ['-0px','-21.4px','-42.8px','-64.2px','-85.6px','-107px','-128.4px','-149.8px','-171.2px','-192.6px']

2.3 从页面提取房源的价格的图片偏移量,进行雪碧图替换。

2.4 反反爬完成。

3. 核心代码

3.1 图片识别

# 导入两个包,一个是识别文字,一个是打开图片
import pytesseract
from PIL import Image

img = Image.open('xx.png')
num = pytesseract.image_to_string(img)
print(num)	# 输出图片识别后的字符串

3.2 生成正确的字典

3.2.1 基准图片偏移量列表

offsets = ['-0px','-21.4px','-42.8px','-64.2px','-85.6px','-107px','-128.4px','-149.8px','-171.2px','-192.6px']

3.2.2 将偏移量列表与图片识别后数字共同便利,得出正确字典。

real_num = {}
for k,v in zip(offsets,num):
    real_num[k] = v
print(real_num)

有需要完整代码的可以留下你的邮箱哦。
好了,本次的分享到此结束。
有任何疑问欢迎在下方留言哦。

发布了34 篇原创文章 · 获赞 210 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_45081575/article/details/100565352