肯德基门店
原文发表时间:2016-08-19 10:57:01
作者:雷中华
FME是个优秀的平台,并保持快速且持续的增长——更多的函数模块、更多的输入输出格式支持。Python是胶水语言,最大的特点就是扩展模块丰富,与FME一拍即合。
一方面,FME借助PythonCaller实现了平台承载功能的扩展,在FME里嵌入Python,融合其他IT技术,彰显FME的平台特性;另一方面,FME自身功能凝聚到pyfme,组合到其他系统中提供专业的fme技术。
本文通过一个网络数据挖掘的范例,介绍在FME平台中,借助PythonCaller融合urllib2、re(正则)、BeautifulSoup(网页信息结构化分析)的实践。
前言
Python凭借简单易上手、跨平台、扩展模块丰富等特点,程序YUAN、数据处理分析、运维等人士喜爱。
阅读本文前,仔细参照下面两篇乱马、lkfree、毛毛虫翻译和撰写的文章,动手试试。
Python与FME(一)http://blog.163.com/antufme@126/blog/static/14049249220101024104836424
Python与FME(二)http://blog.163.com/antufme@126/blog/static/140492492201011216593633
Python在FME中的使用(一)启动和关闭Python脚本
http://blog.163.com/antufme%40126/blog/static/140492492201171810595703/
用PythonCaller转换器调用ArcGIS的gp工具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、城市清单,使用Firefox的Firebug来分析
这个页面里城市基本是在<ul class="shen_info">下面的<li id="xxx">下,html页面分析,比较流行的是BeautifulSoup(4.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
相关阅读
人民网新闻投稿邮箱地址是多少?seo实验室传媒专注软文营销多年为您解惑,人民网的投稿邮箱地址是[email protected]。如果是重大
重温 wallabag:Instapaper 的开源替代品 | Linux 中国
这个稍后阅读应
文章整合2017年肯德基系列文案,看看肯德基一整年都是如何狂炸广告界的。2017年是鸡年,打了鸡血的肯德基几乎全年365天广告无休,刷到
来源:http://www.gpszx.com/neteaseivp/webforum/servlet/Controller?RequestType=searchforum&SubType=getThreadContent&threadI
中国四大名著 《水浒传》《水浒传》是中国历史上第一部用古白话文写成的歌颂农民起义的长篇章回体版块结构小说,以宋江领导的起义