python作为一种动态语言,具有非常高的一发效率,用它来开发定向爬虫,非常适合。目前,已经有不少好用的库可以直接使用,大大加快开发过程。
爬虫一般可以分为静态爬虫和动态爬虫,其中静态爬虫是通过分析要抓取的页面结构,定位到抓取的关键步骤和关键位置后,直接进行数据抓取并进行页面解析,最终得到目标数据。适用于静态页面和简单的Ajax页面。当页面过于复杂时(如需要Cookies验证、通过Ajax获取数据,并经过复杂渲染过程)人工分析的成本将显著加大,此时可通过使用动态爬虫进行抓取。本文以抓取京东商品信息为例,讲述动态爬虫的一般过程。在此之前,我们先了解一下静态爬虫的常用技术。
基于Python的静态爬虫
网页抓取库
- 列表内容
- urllib
- urllib2
- request
- …
页面解析库
- beautifulsoup
- lxml
- HTMLParser
- …
基于Python的动态爬虫
动态爬虫主要解决JS执行和DOM渲染的问题,常见的渲染方式有
- Webkit
- CEF
- PhantomJS
- Electron
- Chrome
- Firefox
- …
本文中我们选用selenium对Chrome进行控制,实现数据的渲染和抓取。 selenium是一个web的自动化测试工具,可以操作Chrome、Firefox等浏览器。