Python 爬虫的工具链

资料爬虫是资料分析的入门砖,Python 更是资料爬虫的热门工具。因为热门,所以也会有许许多多相关的配套工具出现。但对于新手来说,该如何寻找到适合的工具其实是很麻烦的。这一篇文章会介绍一下几个比较主流的相关工具,与他们适合的使用时机。

Requests / urllib

Requests 或是 urllib 这两个套件都是用于处理 HTTP 协定的工具。 urllib 是内建于 Python 有比较完整的 HTTP 的功能(包含网址编码、档案下载之类的),Requests 则比较着重在友善地处理 Request/Response 的传输。

BeautifulSoup / Pyquery

BeautifulSoup 与 Pyquery 是用在接到 HTML 字串的 Response 之后,要如何将他们解析为一个 DOM base 的物件使用。 lxml 跟 html5lib 是两个作为读懂 HTML 字串的解析器(parser)。这两个套件都支援使用类似 css selector 的方式找资料。

Xpath

XPath 是基于 XML 格式的定位技术,也可以将 HTML 视为是 XML 的方式处理,再使用 XPath 找到需要的资料。

Selenium

Selenium 原本是用于网页测试的浏览器模拟工具。但随着动态网页/AJAX 的技术方法,仅透过 Requests 的话会遇到 JavaScript loading 的问题,因此可以搭配 Selenium 这样的浏览器模拟工具,来达到执行 JavaScript 的效果。

PhantomJS

原本的 Selenium 模拟工具需要调用实体的浏览器,像是 Chrome、Firefox 之类的,会造成资源与效能的问题。 PhantomJS 则是一个在 Selenium 中的虚拟浏览器方案,可以在不须打开实体浏览器的情况下进行模拟。

Ghost

前面提到的 Selenium 是为了解决无法执行 JavaScript 的动态网页问题,是透过真的模拟浏览器的运作来处理。 Ghost 则是透过 Python 中来模拟 JavaScript 的程式,达到动态产生资料的目标。

Scrapy

前面讲的主要是「基于一个网页的资料撷取爬虫」,而 Scrapy 则是一个爬虫的框架,目标是想要一次将多个网页都爬取下来。

Pyspider

Pyspider 提供了 Web UI 操作页面的爬虫框架,他也能支援多个网页的下载。

小结

以上这些爬虫工具大致可以分为几个类型:

  1. 静态网站的资料取得:Requests / urllib
  2. 网页资料的解析爬取:BeautifulSoup / Pyquery / Xpath
  3. 动态网站的资料取得:Selenium / PhantomJS / Ghost
  4. 多页面的爬虫框架:Scrapy / Pyspider

License

本著作由Chang Wei-Yaun (v123582)制作, 以创用CC 姓名标示-相同方式分享 3.0 Unported授权条款释出。

转载于:https://juejin.im/post/5ba5f98ff265da0abd351a47

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值