天眼连接你我

天眼连接你我

0.前言1.字体映射2.动态kg3.作者的话

0.前言

最近读者想让我多发点爬虫文章,实在是时间原因,让各位就等了,我一口气,继续研究字体反爬策略,本文是基于天眼进行初探,后文待续。

今天的目标很简单,复习昨日的猫眼反爬虫策略,并且加以实战运用 ,针对不同情形如何处理,以及最最重要的:我发现了我研究的知识图谱领域的应用场景,看下面的一张图:

没错,这就是我研究的知识图谱,简称KG,之前发过一篇文章用d3可视化,我查看了这个网站,也是用的d3,哈哈,是不是之前的d3用到了呢!

时间总是给有准备的人,好像不对,机会总给有准备的人,如果你掌握了,是不是会更加主动呢?

总结一下需求:第一:字体反爬;第二:kg数据;

那么我们来开张,实战吧!

1.字体映射

思路

这个网站据说很难爬,而且IP会封杀的有点厉害,所以我自己搞了个IP池,去爬,一定不要裸奔

昨天我们知道字体不是一一对应关系的,那么对于今天的你会发现,是一一映射的(为什么,看后面),那么我们先来看一下网站实际访问的情形:

看上面两个图,发现不匹配啊!这就是该网站使用自定义字体通过映射出来的表现,我们需要得到映射关系,进而反爬获取真实字体。

接下来我们该怎么解决呢,肯定是找字体相关文件,在html中是css中自定义字体或者直接写进网页,那么我们通过筛选出css信息或者直接查看网页源码来找到相应的字体文件,但是源码不好找啊,这里我就用了css筛选法。

看到没,有一个font.css,我们发现woff格式字体链接了,我们只需要把他下载下来即可,这里可以手动复制链接,直接下载,或者使用我下面给出的代码,自动化下载!

有人会问上述那么多链接,选择哪个,这里就在看一下font筛选,看到对应的字体文件,就可以确定下载哪个链接了!

然后打开

导入woff字体,查看映射关系。

我们看到有汉字。。发现了没,这个网站的反爬虫贼强!我们只是初探!

网页刷新几次会发现字体链接,所以确定是一一映射关系!这里我们将0到9进行一一对应映射。

接下来,让我们畅游代码世界!

实现

封装

以下的所有代码都是基于这个类的封装!

代理池

下面是哪IP跟端口去构造代理,最终形式为:

获取html

这里要说明一下,我在处直接是get一下,没有继续获取text或者content内容,原因在于,为了后面重复使用这个方法,使得逻辑的严谨性跟封装性更好!

下载字体

注意:一定要用content不能用text,content返回bytes,写入以wb正常,如果为text,则报错!

映射关系

这里自己写的一个算法,用来将字符替换掉,如果各位大佬有更优的算法,欢迎讨论!

算法思路是定义新字符串,如果这个字符出现在关系字典中,则用value替换掉,并放入新字符串中,如果当前这个字符没出现在关系字典中,则说明不需要转换,直接放入新字符就可以。

替换内容

将非正常内容通过上述算法替换掉即可!

验证

网站截图如下:

反爬结果如下:

2.动态kg

思路

分析网页发现,那个图d3是动态的,所以猜想在xhr中,于是来到xhr筛选,我们发现了我们先想要的数据!

没错,就是这个json数据!

实现

json获取与存储!

哈哈,有数据了,以后可以搞个大的知识图谱可视化!

3.作者的话

最后,您如果觉得本公众号对您有帮助,欢迎您多多支持,转发,谢谢!

更多内容,请关注本公众号爬虫系列!

我今天才知道,我之所以漂泊就是在向你靠近。

--《廊桥遗梦》

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181031G006UY00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券