俗话说"巧妇难为无米之炊"。如果你是一个数据忍者,却因为没有数据而烦恼,这卷"数据通灵术"或许是你需要的。首先你要看透术名那华丽的外衣,它的真面目是:爬虫技巧。
此卷通灵术包含了爬虫的基础入门术,动态加载破解术,登陆破解术,以及额外赠送的手机APP爬取篇。
作者
杜亚磊
编辑
数小妹
爬虫简介
简单来说,爬虫就是从网上自动下载网页,经过解析处理得到你想到要的数据。这里的步骤和关键词有两个:下载,解析。本文的所有技巧也都是围绕这个两个关键词。
入门篇
大多数的爬虫都是爬取网页上的数据。新手入门,就先搞清楚网页到底是什么。网页的源代码其实就是纯文本,包含了HTML,CSS和JavaScript。
HTML:标记语言,只有语法,没有变量和逻辑,不能称之为编程语言。
CSS:层叠样式表,控制元素的展现形式。
JavaScript:脚本语言,可以动态操作
HTML中元素的增删改。
一般来说,数据是在HTML元素中(否则你看不见它)。详细的HTML介绍可以参考W3School的HTML教程。
下载术
在R语言或Python中下载网页是很简单的。以下的两行代码,使用R的
readLines函数读取了豆瓣电影Top的网页源码:
其他的R包也有类似的函数,如RCurl::getURL和httr::GET。Python中的标配是requests模块。读文档,不细讲。
解析术
下载后的纯文本是类似下边的HTML标签,然而你需要的只是电影名称。
解析术就是将所需数据抽取出来的技巧。接下来介绍三种方法:正则表达式,Xpath和CSS选择器。这些技巧都是通用的,基本不需要考虑编程语言的选择,都会支持的。
正则表达式
正则表达式是通过描述文本规则来达到抽取目的。承接上文的豆瓣电影,使用正则来抽取电影名字:
如果想看看第二行的效果,可以试试下边的代码:
其中.*(.*?).*是一个正则表达式,其匹配规则如下图所示。
这个例子包含了正则中的通配符,贪婪匹配和懒惰匹配,以及分组的概念。看你骨骼惊奇,送你这本正则表达式30分钟入门教程秘籍