资料爬虫是资料分析的入门砖,Python 更是资料爬虫的热门工具。由于热门,因此也会有许许多多相关的配套工具出现。但对于新手来讲,该如何寻找到适合的工具实际上是很麻烦的。这一篇文章会介绍一下几个比较主流的相关工具,与他们适合的使用时机。css
Requests 或是 urllib 这两个套件都是用于处理 HTTP 协定的工具。 urllib 是内建于 Python 有比较完整的 HTTP 的功能(包含网址编码、档案下载之类的),Requests 则比较着重在友善地处理 Request/Response 的传输。html
BeautifulSoup 与 Pyquery 是用在接到 HTML 字串的 Response 以后,要如何将他们解析为一个 DOM base 的物件使用。 lxml 跟 html5lib 是两个做为读懂 HTML 字串的解析器(parser)。这两个套件都支援使用相似 css selector 的方式找资料。html5
XPath 是基于 XML 格式的定位技术,也能够将 HTML 视为是 XML 的方式处理,再使用 XPath 找到须要的资料。python
Selenium 本来是用于网页测试的浏览器模拟工具。但随着动态网页/AJAX 的技术方法,仅透过 Requests 的话会遇到 JavaScript loading 的问题,所以能够搭配 Selenium 这样的浏览器模拟工具,来达到执行 JavaScript 的效果。git
本来的 Selenium 模拟工具须要调用实体的浏览器,像是 Chrome、Firefox 之类的,会形成资源与效能的问题。 PhantomJS 则是一个在 Selenium 中的虚拟浏览器方案,能够在不须打开实体浏览器的状况下进行模拟。github
前面提到的 Selenium 是为了解决没法执行 JavaScript 的动态网页问题,是透过真的模拟浏览器的运做来处理。 Ghost 则是透过 Python 中来模拟 JavaScript 的程式,达到动态产生资料的目标。浏览器
前面讲的主要是「基于一个网页的资料撷取爬虫」,而 Scrapy 则是一个爬虫的框架,目标是想要一次将多个网页都爬取下来。框架
Pyspider 提供了 Web UI 操做页面的爬虫框架,他也能支援多个网页的下载。scrapy
以上这些爬虫工具大体能够分为几个类型:ide
本著做由Chang Wei-Yaun (v123582)制做, 以创用CC 姓名标示-相同方式分享 3.0 Unported受权条款释出。