fme是個優秀的平台,並保持快速且持續的增長——更多的函式模組、更多的輸入輸出格式支援。python是膠水語言,最大的特點就是擴充套件模組豐富,與fme一拍即合。
一方面,fme借助pythoncaller實現了平台承載功能的擴充套件,在fme裡嵌入python,融合其他it技術,彰顯fme的平台特性;另一方面,fme自身功能凝聚到pyfme,組合到其他系統中提供專業的fme技術。
本文通過乙個網路資料探勘的範例,介紹在fme平台中,借助
pythoncaller
融合urllib2、re
(正則)、
beautifulsoup
(網頁資訊結構化分析)的實踐。
前言
python憑藉簡單易上手、跨平台、擴充套件模組豐富等特點,程式yuan、資料處理分析、運維等人士喜愛。
閱讀本文前,仔細參照下面兩篇亂馬、lkfree、毛毛蟲翻譯和撰寫的文章,動手試試。
python與fme(一)
python與fme(二)
python在fme中的使用(一)啟動和關閉python指令碼
用pythoncaller轉換器呼叫arcgis的gp工具
背景
平時瞎折騰,想弄到肯德基中國全國門店資料,找到了位址
。稍加分析,發現門店資料的手工查詢獲取步驟如下:
1、選擇網頁底部「餐廳查詢」標籤;
2、點「按省份」或者「按城市」,選擇城市;
3、出來頁面是該城市的門店清單;
至此,經過四個步驟,某乙個城市的肯德基門店資訊(名稱、位址、特色服務)資料就查詢到了。
分析
1、種子頁面,就是整個資料探勘的起點
此案例裡,「種子頁面」為
①城市選擇,分別按省份、按城市 ②
餐廳具體資訊,包括名稱、位址、特色服務 ③
翻頁資訊
2、城市清單,使用firefox的firebug來分析
這個頁面裡城市基本是在
下面的下,html頁面分析,比較流行的是beautifulsoup(4.0+版本之後叫bs4)
**片段:
root_s
= beautifulsoup.beautifulsoup(urllib2.urlopen(root_url).read()) ##
根據url
獲取html
頁面,再轉為
beautifulsoup
shen_info
= root_s.find('ul',attrs=) ##
根據分析的城市所在標籤特徵,來搜尋
3、切換城市,使用httpfox來抓取post資料報資訊以及返回結果
①是post提交的頁面 ②
是postdata,是程式裡構建post資料的依據。此案例裡有4個引數,分別為cname,pid,pageindex,pagesize,其中pagesize看起來預設值10可以調整 ③
返回資料,看起來是json串
json第一部分是rowcount是該城市門店數,下面是具體的門店資訊
fme實現
先想辦法把種子頁面解析好,然後分別提交查詢,獲取到json
其實就乙個轉換器,pythoncreator。這個轉換器與pythoncaller的區別是它沒有輸入僅有輸出,所以是整個轉換的起點。具體**如下
①解析種子頁面獲取城市清單; ②
遍歷提交查詢; ③
獲取結果,並將結果輸出到構造的feature中。
輸出結果為
第三篇介紹如何拆分解析json結果
#gis#[fme]不懂程式設計怎樣批量根據位址獲取經緯度
這個系列大致內容就是這些。
拓展閱讀
之前有介紹過類似案例,參見
FME如何採集肯德基中國的所有門店位址(二)
2016 09 09 11 34 49 參考上文 fme如何採集肯德基中國的所有門店位址 一 pythoncreator 與pythoncaller 在上文 一 中介紹了借助pythoncreator,從種子位址出發,經過beautifulsoup分析網頁和urllib2的post request獲...
FME如何採集肯德基中國的所有門店位址(三)
fme如何採集肯德基中國的所有門店位址 一 問題分析 fme如何採集肯德基中國的所有門店位址 二 python httpcaller獲取門店json json分析 前面步驟獲取到肯德基店面資訊的json資訊串,用notepad 的jsonviewer分析,結構如下 關鍵資訊在table1裡,有sto...
獻給所有想學習正則和採集的朋友
function get url content url method c 我們用智慧型方式定義header頭倍資訊.foreach getallheaders as key val 虛擬來路.經過修正,基本上,來路也是那個站,主機也是url站點.header array trim str 下面僅僅...