原文发表时间: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、毛毛虫翻译和撰写的文章,动手试试。

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

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

  1. 2020亚洲品牌500强榜单发布 ;肯德基中国门店将限时发售植物肉汉堡 | 美通企业日报...

    今日看点 2020亚洲品牌500强榜单发布,阿里巴巴.华为.中国工商银行.腾讯.丰田.中国平安.三星.中国建设银行.索尼.中国人寿荣登"2020亚洲品牌500强"Top10.&qu ...

  2. 大数据监测:肯德基中国正在悄悄涨价

    北京时间1月7日,独立大数据研究公司Goldpebble Research发布报告称,日前根据其自行研发的消费品价格数据监控系统和社交媒体舆情监控系统发现百胜集团(YUM.NYSE)旗下肯德基中国在全 ...

  3. 肯德基中国在上海第500家门店开业

    美通社消息,百胜中国有限公司宣布,肯德基中国庆祝其在上海第500家门店开业.1989年,上海第一家肯德基餐厅在外滩东风饭店开业.34年后,上海成为中国首个肯德基门店数突破500家的城市. 上海第500 ...

  4. 肯德基推出“爷爷自在茶”,多赛道起跑是否会押中又一个宝

    肯德基KFC的名号,在中国可以说是家喻户晓,甚至成为了不少80后.90后的重要童年回忆.在他们小时候,能够吃上一顿肯德基,那绝对是一件值得向周围朋友炫耀的一件事.自1987年第一次进入中国市场以来,肯 ...

  5. 玩会员积分运营又搞小b分销 肯德基要认真做社交电商!

    此前,肯德基已借会员积分/拼团小程序正式入局社交电商,"肯德基口袋炸鸡店"小程序的全面上线使肯德基同时拥有了"拼团"+"分销"两把武器.类似 ...

  6. 解密:马云为何对肯德基“下手”?

    近日,"马云买下肯德基"消息一出,立即风靡各大报章杂志.网上各大平台.单单是因为百胜(肯德基母公司)新店复制率快速.成功率高,所以马云觉得要"买下"它吗?阴谋论 ...

  7. 卧底肯德基和麦当劳的企业微信群后,我发现了社群的新玩法!

    由于周末都要去培训机构上课,商场里的肯德基与麦当劳成了我近一年最常去的餐厅.在不断的消费中,我也慢慢感受到了他们的一些变化:比如,两家在今年都开始做企业微信社群了. 其实在餐饮行业里,除了这两个快餐巨 ...

  8. 中国鸡荣华鸡为什么干不过洋鸡肯德基

    单说快餐吧,我们的饺子.馅饼.面条. 包子等等,哪个没有几百年的历史?中餐那么多以鸡肉为主料的辣子鸡.文昌鸡. 白切鸡.手撕鸡.炖土鸡等等,哪一个口味不比肯德基的麻辣鸡块好吃?但为什 么时至今日,依然 ...

  9. 一个肯德基拖着6个“拖油瓶”的百胜中国,如何赢下中国市场?

    文/韦恪之 来源/螳螂财经(ID:TanglangFin) 肯德基对于大家来说并不陌生,这家屹立在各个城市最繁华地段的餐饮店自从进入中国市场后生意一直非常火爆,消费者年纪覆盖儿童到老人,企业营收逐年上 ...

最新文章

  1. INTERVAL数据类型-007学习笔记
  2. 深度学习发展简要笔记
  3. IOS开发CALayer隐式动画
  4. java多态上转下_(转)java的多态(向上转型、向下转型)
  5. html5--switch选择结构的优化
  6. 从俄罗斯方块,迈向强化学习大门
  7. 【Java考试】易错知识点,期末考试踩坑题
  8. ssm项目之第三方QQ登陆
  9. 14年macmini装双硬盘_2011中Mac Mini详尽拆解 可装两块硬盘
  10. Google Colab中把pyth3.7版本更换成python2.7
  11. 爱快可以外接文件服务器吗,听说爱快路由器也支持NAS了?
  12. Python编程:通过百度文字识别提取表格数据
  13. 互联网支付系统整体架构
  14. 给父元素添加点击事件时,获取到的 event.target 为子元素(point-events: none 的妙用)
  15. ecshop 数据库字典
  16. ijkplayer播放视频
  17. 2018上海交大计算机考研,2018上海交大学硕考研经验贴
  18. 一个猜灯谜的游戏(求解)
  19. code representation-CPG
  20. 【蓝桥杯真题练习】STEMA科技素养练习题库 练习版004 持续更新中~

热门文章

  1. 移动操作系统元心可能基于MeeGo系统开发
  2. 双色球预测的一次尝试——前期准备与初步实施
  3. 番茄花园站长被拘幕后:微软向个人盗版开刀
  4. flash做一个时钟程序
  5. 网页富文本编辑器推荐
  6. php文件后面有bak,bak文件查看器
  7. 第8天:布局翘楚 - Grid 布局概述
  8. arduino iot_如何使用Arduino构建自定义IoT硬件
  9. canvas手绘正五边形
  10. gaussdb 【FAQ_002】【gs_guc配置pg_hba.conf后不生效】