python爬取自如房子信息,价格是个坑

爬取自如房子的信息

​ 前一阵换房子,找房子真的是太麻烦了,自如自动筛选的功能没有自己手动筛选符合心意,所以打算都爬下来,自己看。

一、发现问题

​ 在爬取的过程中,相信大家都遇到一个坑,就是那个价格的问题,每次随机加载出来一个不规则命名的图片,图片上的数字都是乱序,前端从这张图片根据像素截取出来数字,来展示价格。

​ 这次的图片如下图:

python爬取自如房子信息,价格是个坑_第1张图片

  • http://static8.ziroom.com/phoenix/pc/images/price/da2eb29246dbe091142bac5e9df36d33s.png

    用chrome看价格展示出来的是这样的:

python爬取自如房子信息,价格是个坑_第2张图片

二、价格问题解决思路

思路一

​ 看到上面那个那个图片对应的像素截取真是太坑,要是每次都这么获取,获取的东西真的是太多了,但是这也是一个方法。

  1. 利用ocr将图片转换成文字price_string
  2. 将像素位置和price_string的数字对应起来组成房间价格。

思路二

​ 上面的方法真的太麻烦了,我继续往下看,在源代码页果然找到了那张图片的加载连接,居然还有价格的offset,真是意外惊喜。

var ROOM_PRICE = {"image":"//static8.ziroom.com/phoenix/pc/images/price/da2eb29246dbe091142bac5e9df36d33s.png","offset":[[2,9,6,0],[2,0,8,0],[2,0,7,0],[2,1,6,0],[2,0,6,0],[9,6,7,0],[9,6,6,0],[9,4,6,0],[2,9,6,0],[9,6,7,0],[2,0,6,0],[2,5,6,0],[2,2,8,0],[2,9,8,0],[8,6],[9,4,8,0],[9,4,6,0],[2,0,6,0]]};
  1. 有了这个就可以直接抓取图片,然后ocr转成文字。
  2. 利用这个offset转成房间的价格!

我直接用的思路二,比较简单。

三、文字识别

  • 图片的思路有了,接下来就是文字识别了,尝试了一下tesseract-ocr,发现结果并不是太理想(安装方法)总会有识别错的,后来进行了二值化,图片里的数字1总是识别不出来。

  • 后来突然想起来没必要自己造轮子啊,用大厂现成的就好了,找到了百度AI,里面的文字识别,贴个技术文档的链接:http://ai.baidu.com/docs#/OCR-API/top

  • 最开始用的通用文字识别,但是也会总出现识别不到1的情况,后来又把图片的北京改成白色,有所改善,但是运气不好的时候就识别不出来,后来用的通用文字识别(高精度版),虽然每天免费次数少了,但是不大影响,毕竟识别的次数也不多。

四、代码

链接:https://pan.baidu.com/s/1pjSH1gMiD3ogr_rr07rX-Q

注意:

  1. 需要将自己的百度AI的key输入进去,才能使用。
  2. 代码里面会把图片都下载下来,因为之前调试用的,没有修改。
  3. 代码的自如网站的链接是 北京-顺义 的链接,要改的自己更换。
  4. 里面的需要标的有点反人类,但是懒得改

五、截个图

在这里插入图片描述

你可能感兴趣的:(Python,爬虫)