网络的普及,为了要自动化的搜集资料,提升工作效率,相信Python网页爬虫是最常使用的方法之一,而要实作Python网页爬虫,最受欢迎的三大工具莫过于BeautifulSoup、Selenium及Scrapy,其中各自的主要特色以及使用时机,本文就来为大家进行简单的分享与比较。
一、BeautifulSoup
BeautifulSoup是一个撷取HTML/XML内容的套件,提供了非常多友善的方法(Method),协助开发人员可以快速搜寻及取得HTML/XML中的元素,也因此被广泛的应用在Python网页爬虫的技术上。
但是它并无法单独完整实现Python网页爬虫的整个流程,像是发送请求与解析下载的HTML原始码,所以需要特性的相依性模组来协助,例如:
requests-对网页伺服端发送请求,来取得HTML网页原始码。
html.parser或lxml解析器-将取得的HTML原始码进行解析,才有办法使用BeautifulSoup套件所提供的搜寻方法,来撷取网页元素。
特色
学习曲线较低,非常容易上手
适用于静态网页的爬取
使用时机
对于初学者想要学习入门Python网页爬虫,或是仅针对特定少数网页进行爬取的小型专案,就可以选择BeautifulSoup套件。
二、Selenium
Selenium是一个网页自动化测试的套件,拥有许多网页操作的方法(Method),像是自动化输入资料、点击按钮及滚动卷轴等,同时具备网页元素撷取与操作的功能,让开发人员能够轻松撰写网页的自动化测试脚本。
特色
能够轻松与JavaScript的事件合作
可以处理网页的AJAX请求
自动化操作网页上的元素
使用时机
当所要爬取的网页有使用JavaScript / AJAX等动态载入资料的技术,或是具有登入验证、搜寻机制的网页,就能够利用Selenium套件的网页操作方法(Method),来开发Python网页爬虫。
三、Scrapy
Scrapy本身就是一个网页爬虫框架,提供完整的网页爬虫开发功能,像是发送请求、档案汇出、例外处理机制、侦错(Debug)等,并且是基于Twisted非同步网路框架所建立的,所以能够非同步的发送请求(Request),有较佳的执行速度,学习曲线也较高。
另外,由于Scrapy是一个框架,所以有一定的专案架构及执行流程,除了未来很好维护外,也能够轻松的移转既有的专案到另一个专案。
特色
执行速度较快
允许客制化功能来进行扩充
内建多种档案格式输出(JSON、XML、CSV)
内建支援XPath及CSS表达式来撷取资料
完善的互动式侦错工具(Scrapy Shell)
使用时机
适用于大型的Python网页爬虫专案,有一定的效率要求及需要处理复杂的爬取逻辑,Scrapy就会是一个很好的选择。
四、小结
本文针对三个最常用来实作Python网页爬虫的套件与框架来进行比较,当所要建立的Python网页爬虫属于小型专案,或是仅针对特定的网页来进行爬取,BeautifulSoup套件就可以轻松的实现,而如果网页有登入验证机制或使用JavaScript / AJAX等动态载入资料的技术,就需要使用Selenium套件来协助。此外,如果是一个大型且复杂的Python网页爬虫专案,则使用Scrapy来进行开发,会有较佳的效能及架构。