1、爬虫的核心是什么?
一直以来,对爬虫技术很关注,自己闲来无事,也写一些爬虫。很多python初学者,将爬虫定 自己的发展方向,但学习方法上,我认为有待商榷。
鄙人愚见,爬虫最关键,最核心的不是如何写程序,而是分析网站。而分析网站用到的则不是python的知识,分析网站所需要的技术包括且不局限于下面这些技术:
- html。
- javascrip。
- socket。
- http协议。
- 网络分析工具,例如谷歌浏览器的开发者工具。
前面的分析工作做完了,才轮到python上场,python要解决的,是用代码实现抓取的过程,而抓取的过程,数据的定位则完全依靠前面的分析工作。
最后,抓取到的数据要落库,要保存到数据库中,这里又涉及到数据库。
2、 解决速度问题。
如果你幸运的解决了网站的分析工作和程序编写,那么接下来,你可能要面对速度问题。
需要抓取的数据实在是太多了,你的程序不堪重负。这时,你要采取措施,提高抓取速度。
首先要考虑的是多线程技术,尽管python由于GIL锁的存在导致无法有效利用CPU的多核优势,但网络IO是阻塞的,因此,多线程在这个场景下是可以提高效率的。
如果多线程依然无法满足要求,可以使用多进程加多线程,如果依然无法满足速度,则可以考虑分布式,用更多的机器进行爬取。
3、解决反爬机制。
大家都知道数据的重要性,所以,大点的网站,不会把数据放在那里,任由你抓取的,他们会采取多种反爬的机制,这是我认为爬虫技术中最难的部分,不信的话,你可以去尝试抓取一下淘宝的商品信息。
普通的反爬,很容易就绕过了,如果遇到封IP的情况,可以使用IP代理。
如果遇到了验证码,则可以有针对的写验证码破解程序,但有些网站的验证码,实在是难以破解,比如滑动鼠标拼图的那种。
4、 关于爬虫框架。
爬虫框架并不适合初学者,这是我的个人观点。不只是爬虫框架,包括web框架例如flask,django,我认为,都不适合初学者。我为什么这么说呢?原因就在于,如果你一上来就扑向各种框架,那么你只能学会皮毛,我不否定皮毛的作用,但如果你想成为真正的高手,你就必须关注底层的东西,底层的东西,就是我前面讲到的html、javascript、socket、http协议。
我最初写爬虫时,只用requests 和 lxml 这两个模块,没有任何问题,所以,如果你是初学者,我建议你从基础的,简单的事情做起,当你有能力做网站分析,有能力设计程序时,再去学习爬虫框架,那个时候,事半功倍。
热门跟贴