爬虫入门(实用向)

从接触爬虫到如今也有一年半了,在这里总结一下一个新人入门爬虫须要了解的种种。做为实用向入门教程,我不会讲太多细枝末节的东西。最重要的就是能爬到东西不是吗?html

那好,做为一个爬虫新人,要爬一个网站时,应该怎么开始呢?git

首先,肯定要爬的内容。是要整个网站的全部内容仍是只是部分?须要的爬取的数据在网页源代码里有吗(涉及到模拟js发送请求)?须要的爬取的数据在网页上有吗(要用API爬吗)?肯定要爬的内容以后,紧接着就须要考虑以下问题。github


1.API爬虫和网页爬虫?

嗯,我通常习惯把爬虫分为API爬虫和网页爬虫。首先简要介绍一下两种爬虫:redis

API爬虫数据库

  • 某些网站(通常是比较大的网站)会提供API接口供开发者调用,而后咱们这些可恶的“数据小偷”(笑) 就能够经过调用这些API来获取想要的数据。所谓网站API,通俗来讲就是一个url。带上身份验证数据和一些参数,访问这个url,便可得到想要的数据。一般,网站在提供API的同时也会提供实现好的类库供咱们使用,帮助咱们摆脱烦人的http请求操做。

网页爬虫网页爬虫

  • 模拟浏览器的行为访问网页,并从得到的页面的源代码中解析出须要的数据。

那么,咱们应该写哪一种爬虫呢?选用哪一种爬虫取决于你想要爬的东西。api

  1. 若是要爬的是整个网站的话,别无选择,那就选网页爬虫。
  2. 不然,就是爬部分网页数据了(好比用户数据等)。若是要爬的网站提供API调用的话,那确定首先API爬虫了,由于调用API或者类库比手写网页爬虫一般更简单:)。若是网站不提供API或者要爬的数据API中没有,那么就只好选网页爬虫了。

2.爬下来的数据怎么存,存在哪?

急着去写爬虫以前,让咱们先好好考虑数据存放的问题。浏览器

首先,是存数据库仍是文件里?通常来讲建议存数据库中,便于以后的更新和查找。若是真的数据量比较小或者以后不多有更新和查找的话,那也能够存在文件中(毕竟代码写起来比较简单)。网络

若是存在数据库中,那么选哪一种数据库?这个就跟爬下来的数据相关啦。能够选择通用的MySql,也能够选择与网络数据高度契合的Mongodb。要是爬的是社交网络的话,还能够选择图形数据库,好比Neo4j,Orientdb,Arangodb等。可是图形数据库其较慢的插入速度实在是不适用于实时存储爬虫数据,只推荐在以后作数据分析时使用。 关于图形数据库的插入速度我在以前的一篇博文中提过,有兴趣的能够看看Neo4j安装&入门&一些优缺点scrapy


3.爬虫该怎么写

如今,咱们能够坐下来开始爬虫程序的编写了。考虑到“实用向”三个字,我将经过两个例子来展现基本的爬虫程序怎么写。

3.1 API爬虫

API爬虫--Twitter实战

3.2 网页爬虫

网页爬虫--scrapy入门


4.如何提升爬取的速度

在写完能跑的爬虫后,这是最让人在乎的问题了。

对于API爬虫的话,只须要申请更多的应用,提升API的可调用次数便可。而对于网页爬虫的话,由于涉及到待爬队列的共享问题,不能只是简单地多开爬虫,可能要考虑分布式的爬取方案了,如scrapy-redis


最后,祝爬虫愉快:)。

转载请注明出处:http://www.cnblogs.com/rubinorth/

相关文章
相关标签/搜索