王藎梓,賴(lài)雯潔
(華東師范大學(xué) 地理科學(xué)學(xué)院,上海 200241)
基于房產(chǎn)交易網(wǎng)站的數(shù)據(jù)獲取與在線(xiàn)工具開(kāi)發(fā)
王藎梓,賴(lài)雯潔
(華東師范大學(xué) 地理科學(xué)學(xué)院,上海 200241)
房屋交易網(wǎng)站提供了每個(gè)交易房產(chǎn)的詳細(xì)信息,自動(dòng)獲取這些數(shù)據(jù)并進(jìn)行在線(xiàn)分析可以幫助人們更好地分析一個(gè)地區(qū)房產(chǎn)情況,更有利于決策。開(kāi)發(fā)網(wǎng)頁(yè)分析工具是分析大數(shù)據(jù)發(fā)展的趨勢(shì),其具有更少的代碼,同時(shí)擁有不亞于應(yīng)用程序的功能實(shí)現(xiàn)數(shù)據(jù)采集與數(shù)據(jù)分析的實(shí)時(shí)對(duì)接,使得其成為工具開(kāi)發(fā)的新寵。房產(chǎn)交易網(wǎng)站在線(xiàn)工具利用Python語(yǔ)言結(jié)合Scrapy、ArcPy等第三方模塊開(kāi)發(fā),可自動(dòng)提取房產(chǎn)數(shù)據(jù),并針對(duì)不同數(shù)據(jù)類(lèi)型,對(duì)某一地區(qū)的房產(chǎn)進(jìn)行空間分布分析和規(guī)律監(jiān)測(cè)等。以鏈家網(wǎng)、安居客兩個(gè)房產(chǎn)交易網(wǎng)站為例,從中獲取上海市的新房、二手房等房產(chǎn)數(shù)據(jù),通過(guò)統(tǒng)計(jì)圖表的形式顯示上海市房產(chǎn)的空間分布情況,房?jī)r(jià)漲幅,各地區(qū)房產(chǎn)數(shù)量分布比例等,實(shí)現(xiàn)用戶(hù)對(duì)大數(shù)據(jù)的進(jìn)一步分析認(rèn)識(shí)。
房屋交易網(wǎng)站;網(wǎng)絡(luò)爬蟲(chóng);地理編碼;ArcPy
隨著房產(chǎn)市場(chǎng)的快速發(fā)展和互聯(lián)網(wǎng)技術(shù)的廣泛應(yīng)用,目前網(wǎng)上已有很多房屋交易網(wǎng)站,如鏈家網(wǎng)、安居客、yes515、愛(ài)屋吉屋、我愛(ài)我家等,這些網(wǎng)站為購(gòu)房者和售房者提供了交易平臺(tái),用戶(hù)可以從網(wǎng)站上查看每個(gè)交易房產(chǎn)的詳細(xì)信息,如房產(chǎn)位置、房?jī)r(jià)、房屋的建造年代、樓層等。由于房屋交易網(wǎng)站覆蓋面廣,反映的信息實(shí)時(shí)性強(qiáng),因此,對(duì)房屋交易網(wǎng)站上的房產(chǎn)信息進(jìn)行分析能實(shí)時(shí)掌握一個(gè)地區(qū)的房產(chǎn)市場(chǎng)情況。但網(wǎng)站上的信息是以Web頁(yè)面的形式呈現(xiàn),并不是直接可以用于分析的數(shù)據(jù),如以瀏覽網(wǎng)頁(yè)的方式來(lái)進(jìn)行分析,顯然效率很低,很難實(shí)現(xiàn)對(duì)房產(chǎn)市場(chǎng)的實(shí)時(shí)變化監(jiān)測(cè)。從網(wǎng)頁(yè)中抓取原始數(shù)據(jù),并處理成可以直接用于分析的數(shù)據(jù)這方面已有很多研究。較流行的抽取工具有MDR[1]、改進(jìn)方法Depta[2]等,但其更希望目標(biāo)網(wǎng)頁(yè)是結(jié)構(gòu)化的,因?yàn)槌槿〉男畔⒅饕窃诹斜砘虮砀裰?。梅雪等[3]基于網(wǎng)頁(yè)模板的設(shè)計(jì)準(zhǔn)則,提出了全自動(dòng)生成網(wǎng)頁(yè)信息抽取包裝器Wrapper的方法—PSNT(extraction based on temPlate Structure aNd Tag tree),該方法同時(shí)實(shí)現(xiàn)了對(duì)網(wǎng)頁(yè)中嚴(yán)格和松散的結(jié)構(gòu)化信息的自動(dòng)化抽取,在相似網(wǎng)站中模板生成的匹配效果較好。例如主網(wǎng)站及其各個(gè)子網(wǎng)站,針對(duì)不同開(kāi)發(fā)商的網(wǎng)站,還需要重新匹配模板。歐健文等[4]使用多個(gè)網(wǎng)頁(yè)對(duì)模板進(jìn)行訓(xùn)練,以得到較為普適的模板,而后對(duì)歸類(lèi)爬取網(wǎng)頁(yè)的主題信息,這對(duì)于搜索引擎十分實(shí)用。在地理信息提取方面,王曙等[5]針對(duì)同一地理要素有不同描述的語(yǔ)言特點(diǎn),建立地理語(yǔ)料庫(kù),使用搜索引擎與通用主題相結(jié)合的爬蟲(chóng)抓取網(wǎng)頁(yè)。該方法沒(méi)有事先訓(xùn)練樣本,是先廣泛獲取相關(guān)網(wǎng)頁(yè),而后從篩選下來(lái)的網(wǎng)頁(yè)中再次爬取內(nèi)容,才可獲取數(shù)據(jù)。這幾種方法都是大面積爬取地理信息,并沒(méi)有真正意義上利用Web中的原始數(shù)據(jù),因此為了對(duì)地理數(shù)據(jù)進(jìn)行統(tǒng)計(jì)分析,定點(diǎn)定抓的輕量級(jí)主題爬蟲(chóng)更為適合,功能全面且獲取的是原始數(shù)據(jù)。
從網(wǎng)站抓取房產(chǎn)信息不僅是文本數(shù)據(jù),還需要轉(zhuǎn)換成GIS數(shù)據(jù),以方便對(duì)房產(chǎn)信息進(jìn)行空間分析。除此之外,由于在大城市及特大城市中房產(chǎn)相應(yīng)特征指標(biāo)變化較其他城市迅速[6-8],比起耗時(shí)長(zhǎng)的精確研究,實(shí)時(shí)監(jiān)測(cè)可以掌握房產(chǎn)變化最新動(dòng)態(tài)。以鏈家網(wǎng)和安居客網(wǎng)站為例,研究基于房屋交易網(wǎng)站的房產(chǎn)數(shù)據(jù)獲取與在線(xiàn)分析工具開(kāi)發(fā),并演示在上海市的應(yīng)用。
1.1 鏈家網(wǎng)網(wǎng)站
鏈家網(wǎng)(http://www.lianjia.com/)是鏈家房地產(chǎn)經(jīng)紀(jì)有限公司在2009年成立的房產(chǎn)交易線(xiàn)上平臺(tái),其主要業(yè)務(wù)領(lǐng)域?yàn)樾路?、二手房和租房。房產(chǎn)數(shù)據(jù)包括小區(qū)名稱(chēng)、地址、小區(qū)房屋均價(jià)、建造年代、樓棟總數(shù)、房屋總數(shù)、容積率、綠化率等信息。不僅如此,鏈家網(wǎng)中有百度地圖提供的定位顯示功能,可以直接得到小區(qū)的經(jīng)緯度信息,如圖1所示。
圖1 鏈家網(wǎng)顯示信息
1.2 安居客網(wǎng)站
安居客(http://shanghai.anjuke.com/)是2007年成立的互聯(lián)網(wǎng)房產(chǎn)交易平臺(tái),主要業(yè)務(wù)領(lǐng)域?yàn)樾路?、二手房、租房、商業(yè)寫(xiě)字樓四部分,2015年進(jìn)入58同城旗下。與鏈家網(wǎng)相比,安居客的房產(chǎn)沒(méi)有地理坐標(biāo),需要經(jīng)過(guò)地理編碼得到地理坐標(biāo);在數(shù)據(jù)細(xì)節(jié)方面,安居客的數(shù)據(jù)較鏈家網(wǎng)更為全面。以春申景城為例,在鏈家網(wǎng)中搜索結(jié)果只有“春申景城(公寓)”1條數(shù)據(jù),如圖1所示,但在安居客中搜索結(jié)果有4條,如圖2所示,分為一、二、三期和MID-TOWN,分類(lèi)更為細(xì)致。另外,安居客房產(chǎn)信息中有物業(yè)類(lèi)型、物業(yè)費(fèi)用、總建面、停車(chē)位、出租率等,數(shù)據(jù)種類(lèi)更為全面。
從網(wǎng)站中獲取數(shù)據(jù)主要包括三個(gè)過(guò)程:確定網(wǎng)頁(yè)地址(URL),解析網(wǎng)頁(yè)文件,存儲(chǔ)數(shù)據(jù)規(guī)范格式。下面介紹利用Scrapy爬蟲(chóng)框架實(shí)現(xiàn)上述過(guò)程的方法。
2.1 Scrapy簡(jiǎn)介
Scrapy是Python的第三方軟件包,是一個(gè)簡(jiǎn)單輕量級(jí)的爬蟲(chóng)框架,操作簡(jiǎn)便,適合爬行簡(jiǎn)單網(wǎng)頁(yè)數(shù)據(jù)。如果HTML格式復(fù)雜,含有JSON,或需要用戶(hù)身份驗(yàn)證等,可以考慮使用Java的分布式Nutch或穩(wěn)定性更好的Heritrix[9-15]。Scrapy規(guī)范了完整爬蟲(chóng)應(yīng)有的核心:服務(wù)請(qǐng)求與返回、網(wǎng)頁(yè)解析、數(shù)據(jù)存儲(chǔ)。同時(shí)提供給用戶(hù)足夠的空間來(lái)完善爬蟲(chóng),用戶(hù)鎖定目標(biāo)網(wǎng)站后只需分析網(wǎng)頁(yè)結(jié)構(gòu),即可快速編寫(xiě)爬蟲(chóng)。
使用Scrapy需要安裝第三方擴(kuò)展包,Python2.x版本中需要安裝:zope.interface,pypiwin32,pyOpenSSL,twisted,libxml2dom,lxml,Scrapy。Scrapy框架的工作原理是:首先傳入U(xiǎn)RL,調(diào)度器(scheduler)將其傳入下載器(downloader)對(duì)服務(wù)器發(fā)出訪(fǎng)問(wèn)請(qǐng)求,返回結(jié)果傳入爬蟲(chóng)(spider)中進(jìn)行解析。如果含有超鏈接,則傳回調(diào)度器,否則傳入解析器(ItemPipeline),利用ScrapySelector對(duì)HTML文件進(jìn)行解析。
2.2 確定URL
通常情況下,傳入爬蟲(chóng)的是網(wǎng)站的主網(wǎng)頁(yè),即用戶(hù)最先瀏覽的主頁(yè),而后根據(jù)不同的需求在主頁(yè)相關(guān)的網(wǎng)頁(yè)之間切換。因此確定URL的關(guān)鍵是網(wǎng)頁(yè)的相互切換,其可分為當(dāng)前網(wǎng)頁(yè)的切換和超鏈接跳轉(zhuǎn)兩種,而本質(zhì)上兩者都是通過(guò)對(duì)URL的改變來(lái)實(shí)現(xiàn)的。以安居客網(wǎng)頁(yè)為例演示確定URL方法。
圖2 安居客網(wǎng)站房產(chǎn)信息網(wǎng)頁(yè)
在Scrapy中免去了爬蟲(chóng)需要編寫(xiě)的請(qǐng)求返回命令,用戶(hù)只需直接傳入U(xiǎn)RL即可。觀(guān)察安居客主網(wǎng)站為目錄界面,為抓取全網(wǎng)數(shù)據(jù)需要機(jī)器模擬翻頁(yè)。在view-source中查找“下一頁(yè)”的源碼,所在主標(biāo)簽為
實(shí)現(xiàn)模擬翻頁(yè)代碼如下:
classConSpider(Spider):#創(chuàng)建URL池類(lèi)ConSpider
name="con" #爬蟲(chóng)名稱(chēng)為con,必須唯一
allowed_domains=["shanghai.anjuke.com"]#域名
start_urls=[]
tpath='//div[@class="page-content"]/div[@class="multi-page"]/a[@class="aNxt"]/@href'
npath='//div[@class="page-content"]/div[@class="multi-page"]/i[@class="iNxt"]'
while True:
#rpage為當(dāng)前網(wǎng)頁(yè)傳入selector的解析,利用XPath尋找路徑,
nxtpage=rpage.xpath(npath)
#限制循環(huán)條件,如果最后一頁(yè)的“下一頁(yè)”標(biāo)簽不存在,即為空,未到最后一頁(yè)
ifnxtpage==[]:
turl=rpage.xpath(tpath)[0]
#讀取“下一頁(yè)”標(biāo)簽中的超鏈接,@href讀取屬性,結(jié)果為只含有一個(gè)元素的list
start_url.append(turl) #將URL加入鏈接池
else:
break
在當(dāng)前目錄頁(yè)一般含有的小區(qū)信息是不全面的,需要跳轉(zhuǎn)到該小區(qū)網(wǎng)頁(yè)進(jìn)行抓取。首先對(duì)當(dāng)前網(wǎng)頁(yè)進(jìn)行DOMtree分析。小區(qū)信息包含在
圖3 HTML文檔DOMtree結(jié)構(gòu)圖
Scrapy提供了基于XPath和CSS的Selector方式對(duì)網(wǎng)頁(yè)文件進(jìn)行解析,根據(jù)系統(tǒng)自動(dòng)選擇最優(yōu)的解析方法,可解析HTML和XML兩種文件類(lèi)型。在XPath中,‘//’表示從文檔節(jié)點(diǎn)開(kāi)始抓取,‘/’表示從上一級(jí)標(biāo)簽節(jié)點(diǎn)開(kāi)始抓取,@href表示提取標(biāo)簽超鏈接。實(shí)現(xiàn)提取小區(qū)超鏈接代碼如下:
houses=selec.xpath('//ul[@id="house-lst"]/li') #從當(dāng)前網(wǎng)頁(yè)中提取
foreachhouse in houses:
#從
xq=eachhouse.xpath('div[@class="info-panel"]/h2/a/@href')
xq_+str(xq[0])
2.3 解析網(wǎng)頁(yè)文件
在Scrapy中,解析函數(shù)命名為parse,傳入?yún)?shù)為服務(wù)器返回值response。直接返回的response需要程序提取所需數(shù)據(jù)。首先需要生成一個(gè)selector實(shí)例sel,對(duì)其可使用XPath等方法解析。以安居客在售二手房(http://shanghai.anjuke.com/sale/)信息為例,說(shuō)明解析步驟。觀(guān)察當(dāng)前在售房屋信息,在view-source中尋找對(duì)應(yīng)源碼。面對(duì)嵌套標(biāo)簽,可利用類(lèi)似于list的提取方式提取嵌套標(biāo)簽的同胞標(biāo)簽。
HTML解析函數(shù)代碼如下:
def parse(self,response): #返回的response傳入parse解析
sel=Selector(response) #聲明選擇器對(duì)象sel
datalist=sel.XPath('//div[@class="house-details"]/div[2]')
#抓取屬性為class="house-details"的div標(biāo)簽下嵌套的第二個(gè)div標(biāo)簽
items=[]
item=ConItem()#聲明Items
item['address']=sel.xpath('//span[@class="comm-address"]/@title')
for data in datalist:
item['area']=data.xpath('.//span[1]')
#抓取的面積數(shù)據(jù)存放在area中
item['area']=item['area'].xpath('string(.)')
#讀取span標(biāo)簽下面的文本
item['price']=data.xpath('.//span[3]')
item['price']=item['price'].XPath('string(.)')
item['btime']=data.XPath('.//span[5])
item['btime']=item['btime].XPath('string(.)')
items.append(item)
return items
2.4 存儲(chǔ)數(shù)據(jù)
從網(wǎng)頁(yè)中抓取的文本數(shù)據(jù)一般可以選擇存儲(chǔ)為CSV、JSON等形式。為避開(kāi)編碼問(wèn)題,將網(wǎng)頁(yè)數(shù)據(jù)存儲(chǔ)為JSON格式。打開(kāi)ajkspider所在文件夾路徑的命令提示符,直接輸入:scrapy crawl ajkspider -o ajkdata.json -t json,即可在根目錄中找到數(shù)據(jù)文件。Python中自帶JSON模塊解析,將原始數(shù)據(jù)存儲(chǔ)規(guī)范格式后存儲(chǔ)為Excel文件。
在鏈家網(wǎng)中,網(wǎng)頁(yè)中含有百度地圖的經(jīng)緯度坐標(biāo),可以直接獲??;而在安居客網(wǎng)站中,可直接抽取地理信息為地址,因此需要進(jìn)一步地理編碼,從而得到地理坐標(biāo)。根據(jù)上述兩種地理信息類(lèi)型來(lái)介紹房產(chǎn)數(shù)據(jù)的空間坐標(biāo)獲取方法。
3.1 坐標(biāo)糾偏
一般移動(dòng)設(shè)備上安裝GPS芯片或北斗芯片,獲取WGS84坐標(biāo)系下的經(jīng)緯度,谷歌地圖應(yīng)用WGS84坐標(biāo)系。根據(jù)國(guó)家測(cè)繪地理信息局國(guó)土測(cè)繪司在2006年發(fā)布的文件《導(dǎo)航電子地圖安全處理技術(shù)基本要求》,導(dǎo)航電子地圖在公開(kāi)出版時(shí)必須進(jìn)行空間位置技術(shù)處理,該技術(shù)由指定機(jī)構(gòu)采用國(guó)家規(guī)定辦法統(tǒng)一實(shí)現(xiàn),因此開(kāi)放給大眾的地理坐標(biāo)是經(jīng)過(guò)首次技術(shù)處理的。高德地圖、谷歌中國(guó)地圖和搜搜地圖應(yīng)用該坐標(biāo)系,而百度地圖使用百度坐標(biāo)系。針對(duì)不同的地理坐標(biāo)數(shù)據(jù),需要統(tǒng)一坐標(biāo)系統(tǒng),才可進(jìn)行下一步研究。
3.2 地理編碼
鏈家小區(qū)數(shù)據(jù)中含有地理坐標(biāo),因此只需要坐標(biāo)轉(zhuǎn)換即可,而安居客房屋只有地址,因此需要使用地圖API得到地理坐標(biāo)。選用百度API,一方面是因?yàn)槟壳拜^為主流的地圖API為高德和百度,而百度API當(dāng)日可返回?cái)?shù)據(jù)量高于高德;另一方面是考慮到抓取鏈家小區(qū)經(jīng)緯度坐標(biāo)時(shí),該網(wǎng)站采用的是百度API接口,以保持地理坐標(biāo)的一致性。使用API類(lèi)似于爬蟲(chóng)的原理,區(qū)別是百度的坐標(biāo)返回只有單一數(shù)據(jù),在瀏覽器中打開(kāi)也是一組文本數(shù)據(jù),因此讀寫(xiě)方便。
首先在百度官網(wǎng)(http://lbsyun.baidu.com/index.php?title=webapi/guide/webservice-geocoding)申請(qǐng)密鑰AK,在對(duì)百度服務(wù)器的請(qǐng)求中輸入AK和要返回坐標(biāo)的地址。而后對(duì)服務(wù)器返回的JSON結(jié)果進(jìn)行函數(shù)解析。實(shí)現(xiàn)上述功能的代碼示例如下:
def parseaddress(url): #對(duì)返回結(jié)果解析函數(shù)
response=urllib2.urlopen(url)
s=response.read()
dic=json.loads(s) #聲明一個(gè)JSON實(shí)例
status=dic.get('status',11)#讀取JSON中status的值,0為成功返回結(jié)果
if status==0:#如果返回結(jié)果成功,那么依次讀取參數(shù)值
bd_lng=dic["result"]["location"]["lng"] #規(guī)范JSON數(shù)據(jù)格式
bd_lat=dic["result"]["location"]["lat"]
precise=dic["result"]["precise"]
confidence=dic["result"]["confidence"]
else:
bd_lng,bd_lat,precise,confidence=0,0,0,0
data.extend([status,precise,confidence])
return data#返回"longitude","latitude","status","precise","confidence"
urlAddress='http://api.map.baidu.com/geocoder/v2/?address=%s&output=json&ak=申請(qǐng)的
AK'%(‘上海市’+address) #向服務(wù)器請(qǐng)求數(shù)據(jù),輸入?yún)?shù)為AK和地址address
dataAddress=parseaddress(urlAddress)#使用函數(shù)解析,得到結(jié)果
根據(jù)上述方法,開(kāi)發(fā)可內(nèi)嵌在瀏覽器中的房產(chǎn)信息在線(xiàn)分析工具,Web中數(shù)據(jù)量膨脹的同時(shí)也要求數(shù)據(jù)分析結(jié)果的同步。該工具集成房產(chǎn)數(shù)據(jù)獲取與空間定位功能,用戶(hù)只需輸入要爬取的房產(chǎn)網(wǎng)站,即可獲得網(wǎng)站實(shí)時(shí)數(shù)據(jù)。同時(shí),工具按照用戶(hù)選擇的統(tǒng)計(jì)方法,以地圖和圖表方式即時(shí)顯示房產(chǎn)信息的特征。在線(xiàn)工具界面如圖4所示。
圖4 房產(chǎn)信息在線(xiàn)分析工具使用界面
該工具基于PyQt等模塊開(kāi)發(fā),輕量級(jí),用戶(hù)可以直接下載并運(yùn)行.exe文件即可,不需要配置Python環(huán)境。在線(xiàn)分析工具主要針對(duì)普通用戶(hù),使用基本的科學(xué)計(jì)算方法與直觀(guān)的地圖可視化實(shí)現(xiàn)對(duì)網(wǎng)站數(shù)據(jù)的進(jìn)一步分析。由于其開(kāi)源的設(shè)計(jì),在數(shù)據(jù)分析方面用戶(hù)可以自行加入一些計(jì)算方法,來(lái)設(shè)計(jì)更符合自身需求的在線(xiàn)分析工具。面對(duì)Web中大量的房產(chǎn)數(shù)據(jù),如何在短時(shí)間內(nèi)高效處理大量數(shù)據(jù)才是工具面對(duì)的關(guān)鍵問(wèn)題。同時(shí),由于網(wǎng)速等的限制,瀏覽器加載工具時(shí)更希望工具是輕量級(jí)的,而不是幾十兆、幾百兆的應(yīng)用程序。房產(chǎn)信息開(kāi)發(fā)工具考慮了上述兩點(diǎn),旨在開(kāi)發(fā)面向大眾的輕量級(jí)工具。以安居客網(wǎng)站和鏈家網(wǎng)為例,以上海市為研究區(qū)域演示工具運(yùn)行。
4.1 房產(chǎn)信息獲取
選擇網(wǎng)站:
在“網(wǎng)址”處輸入需要抓取的房產(chǎn)網(wǎng)站網(wǎng)址。單擊“開(kāi)始并保存”按鈕,獲取全網(wǎng)數(shù)據(jù)。抓取數(shù)據(jù)存入Excel中。考慮到兩點(diǎn)因素:一是大量的數(shù)據(jù)會(huì)占用系統(tǒng)內(nèi)存空間,拖慢計(jì)算機(jī)運(yùn)行速度;二是網(wǎng)站中的數(shù)據(jù)抓取下來(lái)可能存在格式錯(cuò)誤或無(wú)效數(shù)據(jù),需要進(jìn)一步的數(shù)據(jù)清洗才可以進(jìn)行分析。由于每次爬蟲(chóng)抓取是向服務(wù)器請(qǐng)求當(dāng)前全部界面,遇到錯(cuò)誤數(shù)據(jù)不得不重新請(qǐng)求相同的網(wǎng)頁(yè),對(duì)資源造成浪費(fèi)。基于上述兩點(diǎn),抓取的數(shù)據(jù)存入Excel。
以安居客、鏈家網(wǎng)作為輸入U(xiǎn)RL,上海市作為抓取城市,截止2016年4月20日,共抓取上海市16個(gè)行政區(qū)(不包括崇明縣)小區(qū)數(shù)據(jù)21 371條,二手房在售數(shù)據(jù)41 849條,在售信息中,獲取房產(chǎn)屬性包括小區(qū)名稱(chēng),地址,所售樓層與該樓房總層數(shù),建造時(shí)間,該房屋售價(jià),房屋面積等。小區(qū)信息中,“房產(chǎn)屬性”包括小區(qū)名稱(chēng)地址,建成時(shí)間,總樓棟數(shù),總戶(hù)數(shù),綠化率,容積率等。
4.2 房產(chǎn)的空間分布
(1)轉(zhuǎn)化為Shapefile文件。
在爬蟲(chóng)抓取數(shù)據(jù)的同時(shí),會(huì)相應(yīng)返回房產(chǎn)經(jīng)緯度坐標(biāo)。利用ArcGIS中自帶的Python接口,導(dǎo)入ArcPy模塊,將點(diǎn)對(duì)經(jīng)緯度坐標(biāo)轉(zhuǎn)化為點(diǎn)要素并存儲(chǔ)在ESRI Shapefile文件中。
(2)地圖可視化。
在“地圖可視化”組合框中設(shè)置各項(xiàng)參數(shù),“城市”選擇“上海市”,“建造時(shí)間”根據(jù)用戶(hù)需要,單個(gè)年份顯示,例如1981年,1982年,或者選擇周期性年份,如1980年以前,1981年-1990年等。同時(shí)勾選“顯示底圖”復(fù)選框,可將點(diǎn)要素與地圖疊合在一起。在圖框右側(cè)有“放大”和“縮小”按鈕實(shí)現(xiàn)對(duì)地圖縮放操作。
4.3 不同類(lèi)型房屋數(shù)據(jù)分析
選擇統(tǒng)計(jì)分析指標(biāo):
在“房源種類(lèi)”中包括二手房、新房、租房、商業(yè)寫(xiě)字樓、海外房產(chǎn)等,工具按照不同類(lèi)型分析數(shù)據(jù)。數(shù)據(jù)分析的指標(biāo)包括“房產(chǎn)屬性”中的價(jià)格、面積等??稍凇敖y(tǒng)計(jì)類(lèi)型”中選擇不同的統(tǒng)計(jì)方式顯示結(jié)果。
環(huán)線(xiàn)二手房、新房房?jī)r(jià)與出售數(shù)量統(tǒng)計(jì)圖如圖5所示。
(1)折線(xiàn)圖統(tǒng)計(jì)分析。
在“房源種類(lèi)”中選擇二手房,“房產(chǎn)屬性”選擇價(jià)格,“統(tǒng)計(jì)類(lèi)型”選擇折線(xiàn)圖。以上海市三條交通環(huán)線(xiàn)為分割線(xiàn),將區(qū)域劃分為四部分,分別是內(nèi)環(huán)以?xún)?nèi)區(qū)域,內(nèi)環(huán)—中環(huán)區(qū)域,中環(huán)—外環(huán)區(qū)域,外環(huán)以外區(qū)域。(截止2016年4月20日)內(nèi)環(huán)—中環(huán)區(qū)域二手房出售數(shù)量占16%,中環(huán)—外環(huán)區(qū)域占12%,與同一時(shí)期新房相比,內(nèi)環(huán)—中環(huán)區(qū)域,中環(huán)—外環(huán)區(qū)域的二手房,新房均出售較少,反映出該區(qū)域是住宅密度較大的城市生活區(qū)。內(nèi)環(huán)以?xún)?nèi)區(qū)域,外環(huán)以外區(qū)域出現(xiàn)了二手房出售的高峰,相對(duì)的外環(huán)以外區(qū)域出現(xiàn)了新房出售的高峰,體現(xiàn)出人們生活水平的提高。從前在郊區(qū)住的人會(huì)選擇靠近市區(qū)買(mǎi)房,因此出現(xiàn)郊區(qū)售樓高峰;而從前在市中心居住的人們希望在郊區(qū)買(mǎi)到環(huán)境質(zhì)量更好的房屋,因此出現(xiàn)了市中心二手房出售和郊區(qū)新房出售的高峰。
(2)餅狀圖統(tǒng)計(jì)分析。
在“房源種類(lèi)”中選擇二手房,“房產(chǎn)屬性”選擇建造年份,“統(tǒng)計(jì)類(lèi)型”選擇餅狀圖,生成圖表表示上海市不同建造年份二手房占比,數(shù)據(jù)標(biāo)簽在餅圖中標(biāo)出。其中2001年-2010年的二手房數(shù)量占在售二手房的50%,其次是1991年-2000年,占比為25%,2011年至今的二手房占18%,而這一數(shù)字將持續(xù)上漲。用戶(hù)在為自己選擇二手房時(shí),可參考該統(tǒng)計(jì)數(shù)據(jù)判斷房屋新舊和價(jià)格的合理性,糾正決策。
圖5 環(huán)線(xiàn)二手房、新房房?jī)r(jià)與出售數(shù)量統(tǒng)計(jì)圖
房產(chǎn)在線(xiàn)分析工具包括抓取數(shù)據(jù)、統(tǒng)計(jì)分析、地圖可視化三大功能,旨在面向大眾對(duì)Web數(shù)據(jù)做進(jìn)一步的數(shù)據(jù)分析處理。工具抓取數(shù)據(jù)方法使用Scrapy爬蟲(chóng),根據(jù)Python的多線(xiàn)程特點(diǎn),可快速抓取全網(wǎng)數(shù)據(jù),但同時(shí)向服務(wù)器發(fā)送請(qǐng)求也給網(wǎng)站服務(wù)器帶來(lái)了負(fù)擔(dān)。用戶(hù)可選擇所需數(shù)據(jù)類(lèi)型進(jìn)行抓取并保存,減輕服務(wù)器壓力,也可以設(shè)置定時(shí)抓取,例如每一個(gè)月抓取一次數(shù)據(jù),存儲(chǔ)在本機(jī)中,這同樣也是一種歷史數(shù)據(jù)保存方式,便于對(duì)房產(chǎn)數(shù)據(jù)做長(zhǎng)期數(shù)據(jù)分析時(shí)使用。其統(tǒng)計(jì)分析功能利用Python科學(xué)計(jì)算方法,在工具中即時(shí)計(jì)算結(jié)果,并直觀(guān)顯示在圖表中。雖然Python相較于C語(yǔ)言沒(méi)有計(jì)算速度優(yōu)勢(shì),但是萬(wàn)級(jí)單位數(shù)據(jù)還是影響不大的,另外Python數(shù)據(jù)處理方面有很多第三方包,數(shù)據(jù)可視化同樣不亞于C語(yǔ)言,其代碼比C語(yǔ)言要簡(jiǎn)潔得多,因此將Python作為在線(xiàn)工具開(kāi)發(fā)的編程語(yǔ)言。工具的地圖可視化借助ArcPy函數(shù)自動(dòng)生成地圖結(jié)果,實(shí)時(shí)顯示在工具界面,使用戶(hù)對(duì)房產(chǎn)數(shù)據(jù)有一定的空間認(rèn)識(shí)。如今網(wǎng)頁(yè)已經(jīng)不僅僅是向人們展示數(shù)據(jù),同時(shí)也可以幫助人們計(jì)算指標(biāo),量化分析數(shù)據(jù),更加便于人的決策。在線(xiàn)工具實(shí)際上是對(duì)網(wǎng)頁(yè)功能的彌補(bǔ),輕量級(jí)和開(kāi)源性是在線(xiàn)工具的特點(diǎn),其優(yōu)勢(shì)在于彌補(bǔ)了數(shù)據(jù)獲取與分析的不同步情況,以便用戶(hù)在短期內(nèi)掌握房產(chǎn)變化動(dòng)態(tài),預(yù)測(cè)趨勢(shì)等。在線(xiàn)工具經(jīng)過(guò)不斷的完善和發(fā)展,將不僅局限于對(duì)特定網(wǎng)站的數(shù)據(jù)獲取以及分析,還可應(yīng)用于各個(gè)領(lǐng)域。但其局限性也是顯而易見(jiàn)的,并不能具備應(yīng)用程序完整的數(shù)據(jù)分析功能。就像電子書(shū)和紙質(zhì)書(shū)一樣,兩者永遠(yuǎn)不會(huì)相互替代,反而是相輔相成共同進(jìn)步。
[1] Liu Bing,Crossman R,Zhai Yanhong.Mining data records in web pages[C]//KDD2003.[s.l.]:[s.n.],2003:601-606.
[2] Zhai Y,Liu B.Web data extraction based on partial tree alignment[C]//International conference on world wide web.[s.l.]:[s.n.],2005:76-85.
[3] 梅 雪,程學(xué)旗,郭 巖,等.一種全自動(dòng)生成網(wǎng)頁(yè)信息抽取Wrapper的方法[J].中文信息學(xué)報(bào),2008,22(1):22-29.
[4] 歐健文,董守斌,蔡 斌.模板化網(wǎng)頁(yè)主題信息的提取方法[J].清華大學(xué)學(xué)報(bào):自然科學(xué)版,2005,45(S1):1743-1747.
[5] 王 曙,吉雷靜,張雪英,等.面向網(wǎng)頁(yè)文本的地理要素變化檢測(cè)[J].地球信息科學(xué)學(xué)報(bào),2013,15(5):625-634.
[6] 廖邦固,徐建剛,梅安新.1947~2007年上海中心城區(qū)居住空間分異變化—基于居住用地類(lèi)型視角[J].地理研究,2012,31(6):1089-1102.
[7] 鄒高祿,渠文晉,鄧 沛,等.二手房?jī)r(jià)格對(duì)于住房特征和區(qū)位變化敏感性分析[J].西南師范大學(xué)學(xué)報(bào):自然科學(xué)版,2005,30(3):552-555.
[8] 李曉文,方精云,樸世龍.上海城市土地利用形成、變化及其空間作用機(jī)制[J].長(zhǎng)江流域資源與環(huán)境,2006,15(1):34-40.
[9] 郭太飛,何潔月.歸納學(xué)習(xí)XPATH Web信息提取規(guī)則[J].計(jì)算機(jī)技術(shù)與發(fā)展,2007,17(3):98-101.
[10] 赫特蘭.Python基礎(chǔ)教程[M].第2版.北京:人民郵電出版社,2010.
[11] Shaw Z A.笨辦法學(xué)Python[M].王巍巍,譯.北京:人民郵電出版社,2014.
[12] Beazley D,Jones B K.Python cookbook[M].南京:東南大學(xué)出版社,2014.
[13] Bird S,Klein E,Loper E.Python自然語(yǔ)言處理[M].陳 濤,譯.北京:人民郵電出版社,2014.
[14] McKinney W.利用Python進(jìn)行數(shù)據(jù)分析[M].唐學(xué)韜,譯.北京:機(jī)械工業(yè)出版社,2013.
[15] 高 軍,楊冬青,唐世渭,等.基于樹(shù)自動(dòng)機(jī)的XPath在XML數(shù)據(jù)流上的高效執(zhí)行[J].軟件學(xué)報(bào),2005,16(2):223-232.
Data Acquisition and Development of Online Analysis Tools Based on Real Estate Transaction Websites
WANG Jin-zi,LAI Wen-jie
(School of Geographic Sciences,East China Normal University,Shanghai 200241,China)
Real estate transaction websites provide every detail about the real estate data.It would be helpful for people to know better about real estate,which is helpful for final decision.Development of online analysis tools meets the trend to analyze big data on real estate with less code to expect the integration of data mining with data analysis in real time owning the function no less than practical programs as new favorite in tool development.This analysis tool online has been developed with Python language as well as third party modules including Scrapy,ArcPy etc. to acquire information on real estate and to monitor and analyze spatial distributions and variations of real estate information from various types of data.Taking two trade websites of real estate,Network for Linking Family and Dwelling Guest,as examples,real estate data in Shanghai has been acquired to display spatial distributions and variations of housing prices as well as percents of real estates in diverse districts for convenience to analysis.
real estate transaction websites;website spiders;geocoding;ArcPy
2016-06-10
2016-09-15 網(wǎng)絡(luò)出版時(shí)間:2017-03-07
國(guó)家自然科學(xué)基金資助項(xiàng)目(41001270);上海市自然科學(xué)基金項(xiàng)目(14ZR1412200);閔行區(qū)中小企業(yè)技術(shù)創(chuàng)新計(jì)劃項(xiàng)目(2014MH011)
王藎梓(1995-),女,研究方向?yàn)閿?shù)據(jù)挖掘、GIS開(kāi)發(fā)與應(yīng)用;導(dǎo)師:吳健平,教授,博導(dǎo),研究方向?yàn)榈乩硇畔⑾到y(tǒng)開(kāi)發(fā)。
http://kns.cnki.net/kcms/detail/61.1450.TP.20170307.0922.074.html
TP39
A
1673-629X(2017)05-0154-06
10.3969/j.issn.1673-629X.2017.05.032