网页抓取神器hawk使用心得

(1)抓取目的

现在网站有大量数据,但网站本身并不提供api接口,如果要批量获得这些页面数据,必须通过网页抓取方式实现。
比如某房产网站的二手房数据,在页面上很整齐的展示,因此可以通过分析网页的html源码,找到总价、单价、位置、户型等数据,并最终实现批量抓取。

(2)抓取原理

1)首先要获取网页的html源码,这个并不难,在浏览器里右击菜单里选择“查看网页源代码”就能看到html源码,页面上能看到的文字基本在都在html源码里。

2)得到html源码后,就需要定位到各个数据的位置,比如“总价”,如下图所示:
网页抓取神器hawk使用心得_第1张图片
可以看到“560”在html里能找到。

同时可以得到“总价”这个字段的xpath:
/html/body/div[4]/div[1]/ul/li[8]/div[1]/div[6]/div[1]/span
我们可以把html看成是一个标签树,xpath就是在标签树的寻找路径。

依此可以得到“单价”、“户型”等字段的xpath,也就可以获取1条发布信息的数据。

3)得到1条信息的数据后,一个页面通常会显示二三十条信息,可以发现这些信息的格式都是一致的,如下图所示:
网页抓取神器hawk使用心得_第2张图片
因此可以发现这些信息都在
/html/body/div[4]/div[1]/ul/
路径下
第1条就是/html/body/div[4]/div[1]/ul/li[1]
第2条就是/html/body/div[4]/div[1]/ul/li[2]
……
基于此,通过基础path+字段相对path就可以得到每个字段的绝对path,然后可以编程实现单个页面的抓取功能了。

4)得到单个页面的数据后,就可以实现多页面抓取,假如网站有100页数据,通过观察网站地址url可以发现,一般第二页就是 “xxx/page2”,第一百页就是“xxx/page100”,因此这个也是很有规律的,修改下url就可以实现多页面抓取了。

(3)hawk抓取

由于网页抓取如此常见,可以在网上搜到大量的抓取软件,并不一定需要自己再开发一个抓取软件(写一个抓取软件不难,写一个通用性强且好用的难),hawk就是一个相当好用的抓取软件。
hawk的介绍页面:
https://github.com/ferventdesert/Hawk

关于hawk的详细介绍,可以看其主页,这里说一下个人使用心得:
1)hawk包含”网页采集器”和”数据清洗”两个模块,网页采集用于定位各个字段的xpath,数据清洗用于抓取数据,并对各个字段做一定的处理,以及导出数据。
2)网页采集器模块很好用,输入url得到网页html源码后,在“搜索字符”里输入比较典型的搜索文本,比如“农光南路双朝南两居室”后,hawk会在html里搜索这个字符串,获取xpath。
“添加字段”后,再点击“手气不错”会自动搜索出每条信息里包含的所有字段值,这个功能真的很强大,有点人工智能的效果了,网页采集工作一次完成。
3)数据清洗模块也很好用,个人用了其中4个模块

1 生成区间数 2 合并多列 3 从爬虫转换 4 写入数据表

具体操作可观看主页提供的视频教程,其中第三步“从爬虫转换”要设置网页采集器的名称(视频少了这个步骤),最后导出到Excel表,得到想要的数据。

hawk这个软件功能很全,而且界面操作方便,支持很多的数据模块,推荐使用。

你可能感兴趣的:(网页抓取神器hawk使用心得)