开发手册 欢迎您!
软件开发者资料库

Python 爬虫简介

网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。本文主要是Python 爬虫简介。

1、Python 爬虫简介

爬虫就是向网站发起请求,获取资源后分析并提取有用数据的程序。互联网中最有价值的就是数据,可以利用爬虫的方式高效地挖掘这些数据(比如商品信息,房产租房,金融信息等)。通用爬虫是搜索引擎(Baidu、Google、Yahoo等)“抓取系统”的重要组成部分。搜索引擎就是通过爬虫爬取网页的方式,将网站信息收录到各家搜索引擎的服务器上,我们就可以通过百度等搜索引擎来搜索我们想要的信息。其它爬虫就是我们根据自己的需求抓取网络上指定的数据。

2、Python 爬虫的优势

Python、PHP、Java等常见的语言都可以用于编写网络爬虫,C/C++。高效率,快速,适合通用搜索引擎做全网爬取。缺点,开发慢,C#, Java, Ruby等。简单,易学,良好的文本处理能方便网页内容的细致提取,但效率往往不高,适合对少量网站的聚焦爬取。而Python 爬虫的优势就是科学计算,数值拟合可以使用NumpyScipy,可视化绘图2D可以使用Matplotlib,3D可以使用Mayavi2,创建、操作和研究复杂网络的结构可以使用Networkx,统计方面和R语言有接口可以使用Rpy,跨平台, 对Linux和Window支持都很好,另外Python开源的爬虫框架也很丰富。

3、Python 爬虫框架

1)Scrapy:Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。它是很强大的爬虫框架,可以满足简单的页面爬取,比如可以明确获知url pattern的情况。用这个框架可以轻松爬下来如亚马逊商品信息之类的数据。但是对于稍微复杂一点的页面,如weibo的页面信息,这个框架就满足不了需求了。它的特性有:HTML, XML源数据 选择及提取 的内置支持;提供了一系列在spider之间共享的可复用的过滤器(即 Item Loaders),对智能处理爬取数据提供了内置支持。

2)Crawley:高速爬取对应网站的内容,支持关系和非关系数据库,数据可以导出为JSON、XML等。

3)Portia:是一个开源可视化爬虫工具,可让使用者在不需要任何编程知识的情况下爬取网站!简单地注释自己感兴趣的页面,Portia将创建一个蜘蛛来从类似的页面提取数据。简单来讲,它是基于scrapy内核;可视化爬取内容,不需要任何开发专业知识;动态匹配相同模板的内容。

4)Newspaper:可以用来提取新闻、文章和内容分析。使用多线程,支持10多种语言等。

5)Python-goose:Java写的文章提取工具。Python-goose框架可提取的信息包括:文章主体内容、文章主要图片、文章中嵌入的任何Youtube/Vimeo视频、元描述、元标签。

6)Beautiful Soup:比较常用,整合了一些常用爬虫需求。它是一个可以从HTML或XML文件中提取数据的Python库。它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式。Beautiful Soup的缺点是不能加载JS。

7)Mechanize:它的优点是可以加载JS。当然它也有缺点,比如文档严重缺失。

8)Selenium:这是一个调用浏览器的driver,通过这个库你可以直接调用浏览器完成某些操作,比如输入验证码。Selenium是自动化测试工具,它支持各种浏览器,包括 Chrome,Safari,Firefox等主流界面式浏览器,如果在这些浏览器里面安装一个 Selenium 的插件,可以方便地实现Web界面的测试. Selenium支持浏览器驱动。Selenium支持多种语言开发,比如 Java,C,Ruby等等,PhantomJS 用来渲染解析JS,Selenium 用来驱动以及与Python的对接,Python进行后期的处理。

9)Cola:是一个分布式的爬虫框架,对于用户来说,只需编写几个特定的函数,而无需关注分布式运行的细节。任务会自动分配到多台机器上,整个过程对用户是透明的。项目整体设计有点糟,模块间耦合度较高。

10)PySpider:一个国人编写的强大的网络爬虫系统并带有强大的WebUI。采用Python语言编写,分布式架构,支持多种数据库后端,强大的WebUI支持脚本编辑器,任务监视器,项目管理器以及结果查看器。Python脚本控制,可以用合适的html解析包。

4、Python 爬虫的应用

利用爬虫我们可以获取大量的价值数据,然后对数据进行分析处理,从而获得感性认识中不能得到的信息。

例如,

1)知乎上爬取优质答案,为你筛选出各话题下最优质的内容。

2)淘宝、京东上抓取商品、评论及销量数据,对各种商品及用户的消费场景进行分析。

3)安居客、链家上抓取房产买卖及租售信息,分析房价变化趋势、做不同区域的房价分析。

4)拉勾网、智联上爬取各类职位信息,分析各行业人才需求情况及薪资水平。

5)雪球网上抓取雪球高回报用户的行为,对股票市场进行分析和预测等。