刚过年,又要到了一年一季的毕业季,马上就要到了大四学长学姐们提交毕业论文的时节,这次爬《汽车之家》的文章就是帮一位学长准备毕业论文研究资料。汽车之家的反爬虫措施做得很好,用了字体反爬技术。对于这类的反爬技术,我上次在帮另一位学长爬《大众点评》的时候也遇见过,当时并没有认真研究是怎样对付这类技术的,现在又遇见了,所以说“学习的苦,一定要吃”。为了学习《汽车之家》的反爬技术,我几乎参考完了所有关于它的博客,最终完成了技能学习。
- 这里以比亚迪新能源汽车作为爬取对象
- 我用的是谷歌浏览器,打开网页后,右击检查,我们发现有些字体并没有正常在源码中显示,如图所示:
这就是重点了,它的反爬虫技术真面目,让你拿不到完整的信息!
接下来爬取,,我们先爬取一部分网页源代码来看看它的真相
结果分析: 上面不真是网页源码中隐藏住的字体吗?这是一种字体编码,你会发现,同一个字的编码是相同的。如何进行字体反爬我就不具体讲解了,具体内容可以参看这位博主的文章,也很感谢这位博主的文章给予帮助!
参考文章: https://blog.csdn.net/zwq912318834/article/details/80268149
如果你不喜欢给电脑安装软件的话,可以使用“百度字体编辑器”来查看它的字体编码
地址: http://fontstore.baidu.com/static/editor/index.html
- 既然是要模拟客户端,不可能只用一个用户去获取大量的信息,使用随机代理,就可以减少被识别反爬的概率,如果有必要,还可以加上IP代理,就不深入探讨了。
输出结果:
替换结果:
1.5.1、构造论坛首页翻页链接
- 如何看一个网页的链接是怎么构造的,我们可以通过点击下一页,并多复制几个链接来进行对比,或者改变一些参数来进行尝试。
- 论坛1~8页的链接:
- 可以很容易的分析出来,它的URL相邻的四个都不一样,每四个就要重复一次格式,那就好办了。
生成结果:
结论: 其实,所有链接都是一样的格式,它也是可以正常访问服务器的,只是,爬虫模拟客户端时,尽量把它模仿到位,减少被反爬的概率。
1.5.2、爬取论点链接
- 论坛的主页几乎没有什么反爬措施,拿到链接是相当容易的,我直接贴代码了
爬取结果:
-
有些文章的评论有很多的页面,每一个页面的链接都需要爬取到,但是它往往又不是完整的,可能会隐藏点中间部分的链接,如下图所示:
-
对于这样的情况,选择构造链接是一个不错的选择
-
思路:
- 获取源代码
- 提取页数最大值
- 判断:只有一个链接时,就是原链接;第二个链接通过原链接的 “-” 切分,加上当前页数值,再拼接上“.html”
运行结果:
- 问答部分和论坛部分的方式是一样的,就不再重述了,如果不明白的地方,可以看看论坛部分。
运行结果截图:
- 20190101~20200206共有文章约72页,每页10篇,约720篇。
注意: 汽车之家的文章包括之家原创的新闻中心 和 用户文章的车家号两个页组成。
- 上面已经讲解了对于新闻及其评论的爬取,现在只需要加上车家号就行了,由于车家号的车主文章评论太少,就不对它的评论进行爬取了。
输出结果:
- 由于新闻和车家号的网页结构不一样,所以必须要分开爬取。它俩的链接参数也不一样,所以可以通过关键词来进行区别它们。
判断结果:
程序分开进行:
运行结果:
- 上面这段程序是我在晚上4点钟运行的,同时分为7个程序爬取,虽然是手机wifi,约7分钟爬完720篇文章。
倡议: 我们快速爬取到自己想要的是一个方面,但是不建议大家在目标网站访问量大的时候去批量爬取别人网站,很容易给别人的服务器造成压力。