爬虫入门(实用向)
2016-10-14 16:29
127 查看
从接触爬虫到现在也有一年半了,在这里总结一下一个新人入门爬虫需要了解的种种。作为实用向入门教程,我不会讲太多细枝末节的东西。最重要的就是能爬到东西不是吗?
那好,作为一个爬虫新人,要爬一个网站时,应该怎么开始呢?
首先,确定要爬的内容。是要整个网站的所有内容还是只是部分?需要的爬取的数据在网页源代码里有吗(涉及到模拟js发送请求)?需要的爬取的数据在网页上有吗(要用API爬吗)?确定要爬的内容之后,紧接着就需要考虑如下问题。
API爬虫:
某些网站(一般是比较大的网站)会提供API接口供开发者调用,然后我们这些可恶的“数据小偷”(笑) 就可以通过调用这些API来获取想要的数据。所谓网站API,通俗来说就是一个url。带上身份验证数据和一些参数,访问这个url,即可获得想要的数据。通常,网站在提供API的同时也会提供实现好的类库供我们使用,帮助我们摆脱烦人的http请求操作。
网页爬虫:
模拟浏览器的行为访问网页,并从获得的页面的源代码中解析出需要的数据。
那么,我们应该写哪种爬虫呢?选用哪种爬虫取决于你想要爬的东西。
如果要爬的是整个网站的话,别无选择,那就选网页爬虫。
否则,就是爬部分网页数据了(比如用户数据等)。如果要爬的网站提供API调用的话,那肯定首先API爬虫了,因为调用API或者类库比手写网页爬虫通常更简单:)。如果网站不提供API或者要爬的数据API中没有,那么就只好选网页爬虫了。
首先,是存数据库还是文件里?一般来说建议存数据库中,便于之后的更新和查找。如果真的数据量比较小或者之后很少有更新和查找的话,那也可以存在文件中(毕竟代码写起来比较简单)。
如果存在数据库中,那么选哪种数据库?这个就跟爬下来的数据相关啦。可以选择通用的MySql,也可以选择与网络数据高度契合的Mongodb。要是爬的是社交网络的话,还可以选择图形数据库,比如Neo4j,Orientdb,Arangodb等。但是图形数据库其较慢的插入速度实在是不适用于实时存储爬虫数据,只推荐在之后做数据分析时使用。 关于图形数据库的插入速度我在之前的一篇博文中提过,有兴趣的可以看看Neo4j安装&入门&一些优缺点。
对于API爬虫的话,只需要申请更多的应用,提高API的可调用次数即可。而对于网页爬虫的话,因为涉及到待爬队列的共享问题,不能只是简单地多开爬虫,可能要考虑分布式的爬取方案了,如scrapy-redis。
最后,祝爬虫愉快:)。
转载请注明出处:http://www.cnblogs.com/rubinorth/
那好,作为一个爬虫新人,要爬一个网站时,应该怎么开始呢?
首先,确定要爬的内容。是要整个网站的所有内容还是只是部分?需要的爬取的数据在网页源代码里有吗(涉及到模拟js发送请求)?需要的爬取的数据在网页上有吗(要用API爬吗)?确定要爬的内容之后,紧接着就需要考虑如下问题。
1.API爬虫和网页爬虫?
嗯,我一般习惯把爬虫分为API爬虫和网页爬虫。首先简要介绍一下两种爬虫:API爬虫:
某些网站(一般是比较大的网站)会提供API接口供开发者调用,然后我们这些可恶的“数据小偷”(笑) 就可以通过调用这些API来获取想要的数据。所谓网站API,通俗来说就是一个url。带上身份验证数据和一些参数,访问这个url,即可获得想要的数据。通常,网站在提供API的同时也会提供实现好的类库供我们使用,帮助我们摆脱烦人的http请求操作。
网页爬虫:
模拟浏览器的行为访问网页,并从获得的页面的源代码中解析出需要的数据。
那么,我们应该写哪种爬虫呢?选用哪种爬虫取决于你想要爬的东西。
如果要爬的是整个网站的话,别无选择,那就选网页爬虫。
否则,就是爬部分网页数据了(比如用户数据等)。如果要爬的网站提供API调用的话,那肯定首先API爬虫了,因为调用API或者类库比手写网页爬虫通常更简单:)。如果网站不提供API或者要爬的数据API中没有,那么就只好选网页爬虫了。
2.爬下来的数据怎么存,存在哪?
急着去写爬虫之前,让我们先好好考虑数据存放的问题。首先,是存数据库还是文件里?一般来说建议存数据库中,便于之后的更新和查找。如果真的数据量比较小或者之后很少有更新和查找的话,那也可以存在文件中(毕竟代码写起来比较简单)。
如果存在数据库中,那么选哪种数据库?这个就跟爬下来的数据相关啦。可以选择通用的MySql,也可以选择与网络数据高度契合的Mongodb。要是爬的是社交网络的话,还可以选择图形数据库,比如Neo4j,Orientdb,Arangodb等。但是图形数据库其较慢的插入速度实在是不适用于实时存储爬虫数据,只推荐在之后做数据分析时使用。 关于图形数据库的插入速度我在之前的一篇博文中提过,有兴趣的可以看看Neo4j安装&入门&一些优缺点。
3.爬虫该怎么写
现在,我们可以坐下来开始爬虫程序的编写了。考虑到“实用向”三个字,我将通过两个例子来展示基本的爬虫程序怎么写。3.1 API爬虫
见 API爬虫--Twitter实战3.2 网页爬虫
见 网页爬虫--scrapy入门4.如何提高爬取的速度
在写完能跑的爬虫后,这是最让人在意的问题了。对于API爬虫的话,只需要申请更多的应用,提高API的可调用次数即可。而对于网页爬虫的话,因为涉及到待爬队列的共享问题,不能只是简单地多开爬虫,可能要考虑分布式的爬取方案了,如scrapy-redis。
最后,祝爬虫愉快:)。
转载请注明出处:http://www.cnblogs.com/rubinorth/
相关文章推荐
- 爬虫入门(实用向)
- Python爬虫的简单入门及实用的实例(1)
- 爬虫入门(实用向)
- Python爬虫入门(7):正则表达式
- 一看就明白的爬虫入门讲解:基础理论篇
- 一、爬虫入门知识
- Python爬虫教程——入门一之综述
- 放养的小爬虫--豆瓣电影入门级爬虫(mongodb使用教程~)
- Python爬虫入门二
- 实用图像处理入门 - 2 - Windows平台下编译openCV
- Python爬虫(入门+进阶)学习笔记 1-3 使用Requests爬取豆瓣短评
- JsRender实用入门教程
- 一看就明白的爬虫入门讲解-基础理论篇(上篇)
- python 网络爬虫入门-Urllib库的基本使用
- [入门]selenium+JAVA实现网页爬虫(2016/7/13)
- Python爬虫—3第三方库_1_requests_入门
- Python爬虫入门六
- python爬虫入门(八)Scrapy框架之CrawlSpider类
- 超级易懂爬虫系列之爬虫入门爬取妹子图
- Photoshop菜鸟实用入门 --- 工具箱简介