赞
踩
很多人还是私信问我汽车之家口碑的问题,所以决定在写一篇汽车之家口碑的爬虫。
本着“授人以鱼不如授人以渔的原则”,我大体说一下思路吧,不提供完成的代码了。
一,爬虫都是具有时效性的,我不知道反爬虫什么时候更新,所以失效以后,除非工作需要,否则我也一般会维护。
二,移动客户端网页一般比电脑的网页更好爬取,所以这次可以用汽车之家口碑的移动端网页,用电脑网页也可以,但是
需要在汽车之家论坛反爬虫的基础上在进行修改。比较麻烦。
三,以这篇口碑为例,
在网页上显示的最满意为下图所示
打开网页源代码后,为以下代码
其中的“控”被<spanstyle='font-family:myfont'></span>替代,“保”被<spanstyle='font-family:myfont'></span>替代。
而我们真正需要的是和。
下面简单说我从知乎搜到的解释一下:这并不是一种编码,而是叫做numeric character reference(NCR)(数字字元参引),数字取值为目标字符的 Unicode code point;以「&#」开头的后接十进制数字,以「&#x」开头的后接十六进制数字。我们用到的是后面的十六进制数字。比如“控”这个字的十六进制数字为:EE06。
然后再网页源代码里搜索“myfont”:
得到一个字体文件的url,直接在浏览器打开这个URL会自动下载一个字体文件,这是汽车之家自己编辑的一个字体文件,相当于对于Unicode字符集的一个扩充,把想替换的字放到这个字符集中,重新给字一个Unicode码,这样就可以起到加密的作用。
我们用FontCreate打开这个字体文件,可以看到如下这些字:
一共90个字加一个空格,我没有全部截图,主要是我们用的的EE06的这个“控”字。
通过多次查看这个字体文件,我发现这些字的排列顺序,和十六进制数字会变,但是字的总数和内容不会变,也就是这90个字随机排列。所以每解析一个页面,就需要重新下载一次这个页面的字体文件,用来对应。
Java解析这个字体文件需要用到org.apache.fontbox.ttf.TTFParser这个类,pom坐标为:
- <dependency>
- <groupId>org.apache.pdfbox</groupId>
- <artifactId>fontbox</artifactId>
- <version>2.0.8</version>
- </dependency>
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。