如何写公式爬取网页数据之船舶定位
各位亲,不用Python,不用写VBA,写公式也能爬网页数据,您知道吗?今天小编给您整理了一个案例,做进出口贸易的朋友,需要每天关注船舶状态,关注一个船舶倒是容易,到网页上查一查就行,但如果有多个,甚至十几个船舶,一个一个查就不方便,也不直观。此时,如果能在表格中批量查,就方便了。下如图是我们要抓取的数据。

这一张图是最终效果,演示了如何在表格中写公式批量查船舶状态,是不是直观,也很方便?

接下来,小编给您介绍完整的抓取步骤。
第一步,安装好Excel网络函数库。本案例所涉及的公式都是免费的,使用也没有任何限制。
第二步,构造网址。以船舶定位为例,我们在维运网上输入船名查询的时候,很容易从浏览器地址栏获得查询网址,简单分析,可以找到网址拼接规律,只要将英文船名拼接到网址后就行。这种网址拼接方式最简单。
http://www.weiyun001.com/NewRoute/trace/shipname/KOTA%20LEGIT
特别说明,由于本例中查询网页是嵌套结构,所以实际找到的拼接网址是下面的网址。
http://ais.weiyun001.com/ShipTrace/GoogleMapIndex/?ShipName=
第三步,分析网页结构,找到数据项所在XPath。推荐使用Chrome浏览器,打开要采集的网页,如下图所示,我们要找到船舶状态所在网页元素的XPath。

将光标移到船舶状态上,右键,在弹出菜单中选择检查,在弹出的开发者工具窗体中,找到要抓取的数据项,右键,选择Copy,选择Copy XPath获得如下XPath。每一个数据项都这样去处理。
//*[@id="lbAisNavStatus"]
第四步,写公式GetWebContentByXPathW(url,xpath),如下图所示,url参数传入拼接的网址,xpath用找到数据项。GetWebContentByXPathW()的详细用法,请点击这里。

第五步,运行Excel浏览器,设置网页抓取任务。

第六步,当Excel浏览器全部抓取完毕后,回到Excel表格重新计算公式。

总结
本案例中,写公式抓取环节,相对比较容易,多看几遍,大家应该都能掌握。难点在于,如何找到正确的拼接网址,您可借助浏览器的网络请求工具,判断实际抓取数据的是哪个网址。
