FME如何采集肯德基中国的所有门店地址(一)

原文发表时间:2016-08-19 10:57:01

作者:雷中华

        FME是个优秀的平台,并保持快速且持续的增长——更多的函数模块、更多的输入输出格式支持。Python是胶水语言,最大的特点就是扩展模块丰富,与FME一拍即合。

 

一方面,FME借助PythonCaller实现了平台承载功能的扩展,在FME里嵌入Python,融合其他IT技术,彰显FME的平台特性;另一方面,FME自身功能凝聚到pyfme,组合到其他系统中提供专业的fme技术。

本文通过一个网络数据挖掘的范例,介绍在FME平台中,借助PythonCaller融合urllib2re(正则)、BeautifulSoup(网页信息结构化分析)的实践。

 

前言

Python凭借简单易上手、跨平台、扩展模块丰富等特点,程序YUAN、数据处理分析、运维等人士喜爱。

阅读本文前,仔细参照下面两篇乱马、lkfree、毛毛虫翻译和撰写的文章,动手试试。

PythonFME(一)http://blog.163.com/antufme@126/blog/static/14049249220101024104836424

 

PythonFME(二)http://blog.163.com/antufme@126/blog/static/140492492201011216593633

 

PythonFME中的使用(一)启动和关闭Python脚本
http://blog.163.com/antufme%40126/blog/static/140492492201171810595703/

 

PythonCaller转换器调用ArcGISgp工具http://blog.163.com/antufme@126/blog/static/1404924922014111591813199/

 

案例:获取肯德基中国全国门店名称及地址信息

背景

平时瞎折腾,想弄到肯德基中国全国门店数据,找到了地址http://www.kfc.com.cn/kfccda/storelist/index.aspx稍加分析,发现门店数据的手工查询获取步骤如下:

1、选择网页底部餐厅查询标签;

2、点按省份或者按城市,选择城市;

3、出来页面是该城市的门店清单;

4、点网页下方下一页,翻页查询。

至此,经过四个步骤,某一个城市的肯德基门店信息(名称、地址、特色服务)数据就查询到了。

  

分析

1、种子页面,就是整个数据挖掘的起点

此案例里,种子页面http://www.kfc.com.cn/kfccda/storelist/index.aspx

城市选择,分别按省份、按城市

餐厅具体信息,包括名称、地址、特色服务

翻页信息

 

2、城市清单,使用FirefoxFirebug来分析

这个页面里城市基本是在<ul class="shen_info">下面的<li id="xxx">下,html页面分析,比较流行的是BeautifulSoup4.0+版本之后叫bs4

代码片段:

root_s
= BeautifulSoup.BeautifulSoup(urllib2.urlopen(root_url).read()) ##根据url获取html页面,再转为BeautifulSoup

 

shen_info
= root_s.find('ul',attrs={'class':'shen_info'}) ##根据分析的城市所在标签特征,来搜索

 

3、切换城市,使用HttpFox来抓取post数据包信息以及返回结果

post提交的页面

postData,是程序里构建post数据的依据。此案例里有4个参数,分别为cname,pid,pageindex,pagesize,其中Pagesize看起来默认值10可以调整

返回数据,看起来是Json

Json第一部分是rowcount是该城市门店数,下面是具体的门店信息

 

FME实现

先想办法把种子页面解析好,然后分别提交查询,获取到Json

其实就一个转换器,PythonCreator。这个转换器与PythonCaller的区别是它没有输入仅有输出,所以是整个转换的起点。具体代码如下

 

解析种子页面获取城市清单;

遍历提交查询;

获取结果,并将结果输出到构造的Feature中。

 

输出结果为

 

下一篇介绍拆分Post部分到PythonCaller中去实现

第三篇介绍如何拆分解析Json结果

第四篇介绍如何根据百度地图地理编码API解析门店经纬度(前面有一篇博文已经介绍了
#GIS#[FME]不懂编程怎样批量根据地址获取经纬度
http://dwz.cn/nocode_bdgeocodeapi

 

这个系列大致内容就是这些。

 

拓展阅读

之前有介绍过类似案例,参见
http://dwz.cn/pachong_lzh

猜你喜欢

转载自blog.csdn.net/fmechina/article/details/81388576