这篇主要来讲下近期做的一个项目-客户端爬取网页数据,用以向客户个性化推荐产品。那么怎么在Android客户端上将浏览的网页爬取,提取有价值的数据呢?请耐心看下去.
1.爬取介绍
首先让我们来了解下爬取这个东西。
一般来讲对我们而言,需要抓取的是某个网站或者某个应用的内容,提取有用的价值,内容一般分为两部分,非结构化的文本(e.g. HTML网页),或结构化的文本(e.g. JSON数据)。
这边要特殊介绍下HTML网页。HTML基本上是传统爬虫过程中最常见的,也就是大多数时候会遇到的情况,例如抓取一个网页,得到的是HTML,然后需要解析一些常见的元素,提取一些关键的信息。HTML其实理应属于结构化的文本组织,但是又因为一般我们需要的关键信息并非直接可以得到,需要进行对HTML的解析查找,甚至一些字符串操作才能得到,所以还是归类于非结构化的数据处理中。
因为我这期项目做的就是跟HTML网页相关,所以我很关心网页内容的来源,以及对应的解析爬取方式。
来源:
- 网页包含内容。一般来讲基本上是静态网页已经写死的内容,或者动态网页,采用模板渲染,浏览器获取到HTML的时候已经是包含所有的关键信息,所以直接在网页上看到的内容都可以通过特定的HTML标签得到
- JavaScript代码加载内容。这种情况是由于虽然网页显示时,内容在HTML标签里面,但是其实是由于执行js代码加到标签里面的,所以这个时候内容在js代码里面的,而js的执行是在浏览器端的操作,所以用程序去请求网页地址的时候,得到的response是网页代码和js的代码,所以自己在浏览器端能看到内容。
- Ajax异步请求。这种情况是现在很常见的,尤其是在内容以分页形式显示在网页上,并且页面无刷新,或者是对网页进行某个交互操作后,得到内容