从接触爬虫到如今也有一年半了,在这里总结一下一个新人入门爬虫须要了解的种种。做为实用向入门教程,我不会讲太多细枝末节的东西。最重要的就是能爬到东西不是吗?html
那好,做为一个爬虫新人,要爬一个网站时,应该怎么开始呢?git
首先,肯定要爬的内容。是要整个网站的全部内容仍是只是部分?须要的爬取的数据在网页源代码里有吗(涉及到模拟js发送请求)?须要的爬取的数据在网页上有吗(要用API爬吗)?肯定要爬的内容以后,紧接着就须要考虑以下问题。github
嗯,我通常习惯把爬虫分为API爬虫和网页爬虫。首先简要介绍一下两种爬虫:redis
API爬虫:数据库
网页爬虫:网页爬虫
那么,咱们应该写哪一种爬虫呢?选用哪一种爬虫取决于你想要爬的东西。api
急着去写爬虫以前,让咱们先好好考虑数据存放的问题。浏览器
首先,是存数据库仍是文件里?通常来讲建议存数据库中,便于以后的更新和查找。若是真的数据量比较小或者以后不多有更新和查找的话,那也能够存在文件中(毕竟代码写起来比较简单)。网络
若是存在数据库中,那么选哪一种数据库?这个就跟爬下来的数据相关啦。能够选择通用的MySql,也能够选择与网络数据高度契合的Mongodb。要是爬的是社交网络的话,还能够选择图形数据库,好比Neo4j,Orientdb,Arangodb等。可是图形数据库其较慢的插入速度实在是不适用于实时存储爬虫数据,只推荐在以后作数据分析时使用。 关于图形数据库的插入速度我在以前的一篇博文中提过,有兴趣的能够看看Neo4j安装&入门&一些优缺点。scrapy
如今,咱们能够坐下来开始爬虫程序的编写了。考虑到“实用向”三个字,我将经过两个例子来展现基本的爬虫程序怎么写。
在写完能跑的爬虫后,这是最让人在乎的问题了。
对于API爬虫的话,只须要申请更多的应用,提升API的可调用次数便可。而对于网页爬虫的话,由于涉及到待爬队列的共享问题,不能只是简单地多开爬虫,可能要考虑分布式的爬取方案了,如scrapy-redis。
最后,祝爬虫愉快:)。