1 问题描述

最近接到一个任务是爬取汽车之家上面各论坛的回复。但是大家都清楚汽车之家的反爬虫措施做得相当好。也是为了保护个人权益的原因或者是保护用户的信息吧。所以为了完成任务就必须要反反爬虫。这是一个很让人头痛的问题。

2 问题分析

汽车之家这个网站的反爬措施做得相当严格,首先我们来看看这个反爬措施到底是怎么样的:

反汽车之家反爬虫_反爬虫                    

首先看到这样一条论坛的回复,这是网页页面上显示的原本的回复。也是我需要获取的信息。

反汽车之家反爬虫_反爬虫_02

这是刚刚那一条回复的源码,和我在网页上看到的文字有很大差别。源码上的文字是“这钱放别人包里就往外掏啊……”,而网页上的文字是“这钱一放别人包里 就是不好往外掏啊……”。如果我按照平常那样直接就去获取数据,最后的到的就是错误的数据。

其实我也发现源码中缺少的文字使用font-family属性自定义了字体,可以不影响用户解读,但是鼠标选择不到,当然爬虫也会获取到不完整的数据。

3 解决方案

通过百度看了很多博客之后,发现了一个叫ttf文件的东西,访问其中ttf文件的地址,可将ttf字体文件下载到本地。下载下来之后还不够,需要将ttf文件通过python转化为xml文件进行解析。最后发现原来他的自定义字体是通过图片做成的,儿每个字体对应的图片有固定的x、y、z坐标,我们就可以利用这些坐标将每个编码表示的中文汉字解析出来,通过转换,就能将编码转化为文字。但是又遇到了一个新的问题,不如“上”和“十”的坐标都为1-12-12,这个该如何是好呢?目前我没有想到非常好的办法,幸好数据量比较少,我选择手动将没有替换的文字替换上去,这个肯定是不明智的选择,但是又想不出更好的方法。如果你有更好的方法可以给我分享哦。

4 总结

其实反爬虫与反反爬虫本来就是一对敌人,但是任何反爬虫技术都有对应的反反爬虫技术来应对,俗话说兵来将挡水来土掩。只要我们认真去发现一些规律就一定能发现并解决一些问题。

编程使我快乐。

更多精彩文章: