学习爬虫应该从哪里学起?
爬虫技术那么屌,大神推荐几个网站,让菜鸟学习一下
1楼(未知网友)
先学http协议
2楼(未知网友)
爬虫的入门是很快的。
了解HTTP协议,了解几个API,就可以直接上手写代码了。
推荐:《自己动手写网络爬虫》一书,里面详细讲解了爬虫的基本原理和实现,尽管API有些过时了,但是思路是很棒的。
爬虫的学习分为下面几个阶段吧:
第一阶段:了解HTTP协议,入门几个API
关于API,推荐下面两个:
HttpClient
Java的一个库,用起来很不错,把HTTP协议的东西都封装好了。
Scrapy
Python的爬虫库,用的不多,详细的在这里已经有回答的很好的了:如何入门 Python 爬虫? - 爬虫(计算机网络)
了解这两个库的基本使用,怎么发起GET/POST请求,怎么用连接池、怎么管理连接、怎么设置代理,然后就基本上可以爬大部分网站了。
第二阶段:优化爬虫,增加爬虫的功能
现在需要考虑的是如何爬取那些比较繁琐的网页,比如微博需要登陆才能爬一些数据,知乎和豆瓣一样;对于这样的案例,你需要考虑完整的解决方案(多个僵尸账号、Cookie池等等)。
对于爬下来的网页,你需要抽取其中的字段(也就是你需要的字段);说白了这就是个解析的过程,解析的工具有很多,对于JSON和HTML或者XML解析的库非常多,不一一列举了,熟悉这些API的使用,并且注意正则表达式对数据解析的使用。
对于爬取数据的存储,大数据的话就别用MySQL了,Hbase是比较不错的选择,速度快的不止一点点。
可以多了解其他的一些爬虫的实现,增加自己的经验,比如Nutch爬虫和ElasticSearch搜索引擎。
第三阶段:对抗反爬
我的第一个爬虫程序是爬取淘宝商品的评论,爬了没多久就开始报异常,一看网页,不返回数据了,明显淘宝检测到了我在对其进行爬取。这里就要涉及反扒的问题了。
对于反扒的对抗,这里肯定需要多个代理IP,而且每个IP发起HTTP请求的速度不能过快,一样会被反爬程序检测到的。所以这里要针对单个代理IP进行发起HTTP请求的速度控制,两秒一次是比较合适的选择。
另外,做DNS缓存也是非常必要的。通过DNS缓存不仅可以免去DNS查询的时间,依然可以避免被检测到正在爬取。
第四阶段:构建大型的分布式爬虫系统
这里就需要很多的爬虫方面的经验了,不仅仅是反爬策略、HTTP请求的基本知识、存储、网页内容解析,更多的是整个项目的设计和对后向兼容性的考虑吧。内容非常多,就暂且不一一展开了。可以参考八爪鱼采集器 ,他们的数据采集器做的很不错。
恩,以上~
3楼(未知网友)
学习爬虫技术很多年了,现在自己做了个标准化采集器——发源地。下面来解答下你的疑问:
1、要想了解爬虫,那么,不得不提到HTTP协议了,HTTP是爬虫工作的重要支撑,了解HTTP协议对于我们写出强大的爬虫有着重要的意义,如果你现在对HTTP协议还完全不了解,那么这本书是你不错的选择,《HTTP权威指南》(好不容已找到完整版,送给真正想学的人吧)学习这个,你将会对HTTP有深刻的认识,写爬虫的时候,也能更加如鱼得水。(注:并不是说必须完全学会HTTP才能写出爬虫,只是对Http了解越多,对我们有益无害,有时间强烈推荐看看这本书)
2、我自己真正接触了解爬虫的入门书籍《自己动手写网络爬虫》(包含书籍的源代码),作为入门确实还不错,里面涉及到爬虫的方方面面,爬虫的一些核心问题,研究方向,分布式爬虫,还有大数据方面的一些内容,HDFS,HBASE,MR等,感兴趣的可以看看,对于整个爬虫领域和大数据有个大致的描述。
以上可参考,需要交流可联系我。