999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

建筑類網站聚焦爬蟲策略研究

2020-11-23 01:44:03林汨圣王揚
科技創新與應用 2020年33期

林汨圣 王揚

摘? 要:在工作和研究中持續更新大量的資料和數據是建筑師的職業基礎。傳統人工搜索互聯網的方式工作量大且挖掘率低,對網站數據源的利用往往不夠充分。國內大部分建筑類網站采用HTML文本標記數據,對HTML采用網絡聚焦爬蟲有助于建筑師高效定位并規范化儲存專業數據。通過對建筑類主流網站結構特征進行分析,總結建筑學3種專業爬蟲需求?;赑ython的語言特征,提出公開數據類和建筑檔案類2種爬蟲策略。實測結果表明爬蟲策略具有數據采集實時性好、易管理維護的優點,同時均運行高效且穩定,可為建筑專業大數據分析提供更多高質量的數據源。

關鍵詞:聚焦爬蟲;網絡爬蟲;HTML;Python;建筑學

中圖分類號:TU17? ? ? ? ?文獻標志碼:A? ? ? ? ?文章編號:2095-2945(2020)33-0001-06

Abstract: It is a professional basis for architects to keep updating a large number of data and statistics in work and research. Due to the heavy workload and low work rate of the traditional artificial Internet search mode, the utilization of website resource is often insufficient. Most of Chinese architectural websites use Hyper Text Markup Language. Through focus crawler of HTML, it is efficient for architects to locate and store data in a standard way. Based on the analysis of common websites of architecture, three kinds of professional crawler requirements of architects are summarized. Based on the features of Python, two crawler strategies, namely numeral data strategy and building archives strategy, are proposed. Results show that these strategies are highly effective, stable, and have advantages of good real-time data collection, easy management and maintenance, which can provide more high-quality data sources for architectural big data analysis.

Keywords: focused crawler; web crawler; HTML; Python; architecture

建筑師是與時俱進的職業,保持對專業資訊的敏感度是一種基礎素養。隨著互聯網的普及,世界各地的建筑資料均可在互聯網自由共享。對大部分建筑師而言,面臨的不再是缺乏資料的問題,而是高效地從海量資料中篩選信息的問題。隨著編程技術的普及,基于Python的網絡爬蟲技術可為建筑師訂制建筑相關數據的專用搜索引擎。本文根據網絡爬蟲的運行原理,在分析建筑學主流網站的特征后提出面對建筑專業需求的爬蟲策略,為建筑專業數據挖掘和大數據分析提供可靠的研究基礎。

1 建筑專業爬蟲需求與實現技術

1.1 建筑學網絡需求

建筑學專業常規采集數據的方法有3種:查閱書刊、實測與問卷、搜索互聯網。其中多數建筑人員搜索互聯網的方式是通過瀏覽器手動搜索并下載數據。這種手動操作方式是一種傳統的網絡數據挖掘方式。如今互聯網普及的時代,建筑專業對高效獲取網絡信息的需求日益增加。研究項目時需要基礎資料、設計構思時需要參考案例、會議總結時需要規范模板,等等。然而,海量數據的篩選也占用了工作的大量時間和精力。特別是國內大部分建筑相關網站都是免費提供資源,網站內不可避免地安插廣告、驗證碼、個性推薦等干擾信息。因此,準確、直接且高效地定位所需網絡數據,按照用戶意愿規范化存儲到本地是建筑相關從業人員和研究人員的切實需求。

目前與建筑相關的爬蟲研究并不多。比如,房產信息研究者關注通過爬蟲獲取某地區房價及相關數據,借此分析房價趨勢[1]。地理研究者借助爬蟲提高獲取地理國情房屋建筑專題數據的精度和效率[2]。規劃研究者爬取多源數據并融合應用于城市規劃研究[3]。大部分研究都是從數據研究員的視角出發,但從建筑學的專業需求出發解決網絡爬蟲問題的專項研究較少。參考有關建筑類網站建設的有關研究[4,5],總結建筑學常用網絡資源如表1所示。建筑類網站分為3類:建筑檔案類、公開數據類、素材收集類。也有整合資源的大型綜合網站涵蓋了上述3類,比如,筑龍學社(www.zhulong.com/)、建筑學院(www.archcollege.com/)和土木工程網(www.civilcn.com/)等。查看網站主頁源代碼可知,國內建筑學常用網站大多仍采用傳統的HTML文檔(Hyper Text Markup Language,超文本標記語言)編寫。HTML指帶有CSS(Cascading Style Sheets,層疊樣式表)屬性的文本,是專門用于描述網頁的一種標記語言。HTML層級結構分明,所需下載的數據按上下級目錄有序存儲在網頁源代碼中。通過定位HTML文檔的標記(Tag)或屬性(class)可實現聚焦爬蟲獲取數據。

1.2 基于Python的網絡爬蟲技術

網絡爬蟲(Web Crawler)也叫網絡蜘蛛(Spider)、網絡機器人(Robot)等,指自動依照用戶定制的規則搜索并獲取網絡數據的機械程序。爬蟲可代替用戶通過網站的URL(Uniform Resource Locator,統一資源定位符)向服務器請求數據。服務器響應后,爬蟲可以代替瀏覽器解析網站源代碼,然后根據設定的規則批量提取數據。最后,爬蟲可按要求規范地把數據存儲到本地,便于日后處理。本質上爬蟲就是程序超高速模仿人工上網,讓非網站管理員的用戶從網站獲取批量數據。一個考慮周到的爬蟲程序可以與服務器形成良性互動,很大程度輔助建筑專業解決網絡資源的采集需求,讓建筑學數據庫容量更貼近大數據要求[6]。Python語言可在大多數情況下高效地實現建筑專業爬蟲需求。

Python是一門面向對象編程(Object Oriented Programming)的語言,其具象和簡潔的特性更適合跨專業編程人員閱讀使用。Python跨平臺廣、開源代碼庫量大,從爬蟲、數據分析到機器學習、圖像識別等,可以輔助建筑專業完成機械性的重復工作[7-8]。通常在建筑類數據的爬蟲中,搜索對象都是具象且明確的,操作思路是清晰明確的。使用Python爬蟲可以盡可能接近建筑師思維完成工作。Python不一定最適應爬蟲,但很大程度是最適合建筑師使用的編程語言?;赑ython編寫的爬蟲程序不僅是獲取專業數據的良好基礎,也是大數據分析的科學基礎。本文借助Python3語言引用requests、BeautifulSoup、openpyxl、os等代碼庫編寫爬蟲代碼。其中requests用于請求URL數據,BeautifulSoup用于解析HTML文檔,其他代碼庫聯動用于獲取并規范化儲存數據。

1.3 適應建筑專業需求的爬蟲策略

網絡爬蟲按照實現的技術和結構分為通用爬蟲、聚焦爬蟲、增量式爬蟲和深度爬蟲等。由于建筑網站具有較高專業性,網站彼此較為獨立,很難只用通用爬蟲技術實現全網數據爬蟲。使用聚焦爬蟲和深度爬蟲能更有針對性地實現專業數據爬蟲。聚焦爬蟲(Focused Crawler)指按照預先定義好的主題有選擇地進行網頁爬取。聚焦爬蟲可把目標定位在與建筑主題相關的網頁中爬取指定數據,從而節省大量的服務器資源和帶寬資源,對特定專業內容的爬取具有很強的實用性。深度爬蟲(Deep Crawler)是以網頁深度優先,把所需信息逐層打開,記錄所需信息的頁面列表,直到爬取滿足深度要求再結束。建筑類網絡爬蟲主要是這幾類爬蟲技術的組合體。

如表1所述,建筑類網絡資源豐富且專業性較強。對應的建筑學網絡爬蟲需求主要有3種:圖文檔案資料,數值型數據,批量同類型素材。通過數據類爬蟲策略和檔案類爬蟲策略可基本解決上述需求。其中數據類爬蟲以聚焦優先,檔案類爬蟲以深度優先。通過調研發現,我國政府門戶類網站(*.gov.cn)內大部分的公開數據信息已經過整理。用戶通過公民信息注冊登錄即可獲取信息。目前爬蟲對這類網站針對性不強,同時也不提倡對這類網站進行爬蟲。本文通過兩個實例分別實現數據類爬蟲和檔案類爬蟲策略。

2 公開數據爬蟲策略

2.1 數據請求與解析

數據類爬蟲指與連續數值關聯度較高的信息。比如:高度、面積和時間等。數據的影響因子涉及越全面,數據變動規律的預測越準確[9]。因此數據類爬蟲策略往往優先限定提供數據樣本的網頁目錄。如非必要不深入網頁內頁,避免數據報錯。本文以anjuke.com為例,搜索2020年3月廣州市越秀區二手房的房源信息。房價及其相關信息是時刻隨著市場交易變動的。通過爬蟲保持量大且長期的數據庫才能基本滿足大數據的研究基礎。該網站網絡結構層次清晰,數據量大且實時更新速度較快,能保證爬蟲的長期穩定運作。

尊重robots協議的科學爬蟲是實現用戶與服務器間良性互動的基礎。robots協議(robots exclusion protocol,網絡爬蟲排除標準)是互聯網爬蟲的一項公認的道德規范,用于公示允許爬蟲的內容。如圖1所示anjuke.com的部分robots協議內容,禁止了具體目錄下的爬蟲。本文對建筑類網站爬蟲均遵循網絡協議,研究重點在于準確、便捷、穩定地提取所需的有效信息,而不刻意強調爬蟲速度。程序內合理設置限速(Crawl-delay),避免對網站服務器造成負擔。盡管合理設置了限速,爬蟲策略依然比人工搜索高效。

該網站主要的源數據基本記錄在HTML文檔中。因此,對HTML數據的爬蟲策略主要分為四步:發出請求、解析文檔、定位數據、規范存儲。首先,通過網站的URL向網站服務器發出請求,征求服務器響應。如圖2、3所示,當Request Method顯示為“GET”時,即為可請求的HTML文檔。Status_Code顯示為“2XX”時代表服務器成功響應了請求。當響應成功后,服務器返回的是一個二進制數據包,根據編碼方式進行解碼即可獲取HTML文檔數據。

解碼所得HTML文檔數據可用第三方的bs庫解析為bs4.BeautifulSoup類,即一種容錯能力較強的數據。解析后的網頁數據仍量大且雜亂,在獲取數據時需鎖定所需數據。通常先找尋數據的上級標記(tag),再往下級縮小范圍定位每個數據,從而避免數據干擾。有組織的數據定位可保證數據儲存的規范化。通常使用表格對這類型數據進行儲存,既便于Python直接分析,也便于第三方軟件讀取分析。

2.2 數據爬蟲實現

如圖4展示了數據爬蟲策略的程序核心代碼和執行結果。本次爬蟲設置結束條件為定數循環搜索同一詞條前50頁信息。網頁URL特征中‘guangzhou代表廣州市,‘yuexiu代表越秀區,‘x代表頁碼。日后維護只需要修改上述關鍵參數即可搜索其他地區房源信息。通過requests.get()向該網站提出請求并自動解碼返回的二進制數據。通過res.content確認該網為utf-8編碼,與Python3內置編碼一致。因此確認網站響應成功后可直接用BeautifulSoup解析返回所得的HTML文檔。鎖定數據時用find()定位房源信息的總標記(

    ),并用find_all()找出每個單位信息所有的上級標記(
  • )。在單位信息范圍內分別定位每個單位的名稱、戶型、面積、樓層、年份、地址和價格等數據。其中難點在于地址數據被獨立列出,其上級標記(
    )與其他數據的同級標記是完全相同的。如不進行區分則會出現定位報錯,因此前者用上下級關系定位,其他數據用序列關系定位,明確區分了定位路徑。在此基礎上深度爬蟲能繼續定位單位小區容積率、綠地率、區位及配套等影響因子。遵守網絡協議,本程序設置每頁執行總延時大于6.5秒,確保爬蟲與服務器間的良性互動。需要特別注意的是由于國內建筑類網站自身的建設與維護大多仍依靠人工。網站數據的錄入與輸出不可避免出現個別疏漏或不規范,因此程序設置了錯誤信息修正方式。比如設置except IndexError可避免個別單位由于缺失“年份”、“地址”等數據導致爬蟲信息錄入出錯。

    如圖5展示了爬蟲獲取的信息部分統計結果,最終結果顯示本次爬蟲了3030條廣州市越秀區二手房房源信息。結果顯示2020年3月越秀區二手房均價52076.9元/m2。數據經過清理、量化后可進行簡易統計。如建筑面積60m2以下的單位均價41001.5元/m2,60~100m2的均價51997.5元/m2,100m2以上的均價64429.8元/m2。將數值型數據輸入模型回歸模擬,回歸方程能解釋89.18%的房價變動,數據樣本趨勢符合預期,可供后續分析。本例爬蟲總耗時442秒,可高效地輔助建筑師完成數據收集工作。同時,程序編寫后只需少量維護即可長期多次重復運行。

    當程序穩定適應平臺的大部分數據后,該策略通過廣度爬蟲可拓寬數據的豐富性和時效性。比如,依然以該網站為例,橫向獲取2019年4月至2020年3月廣州全市與廣州越秀區每月的新房和二手房均價,綜合計算后生成折線圖對比一年內房價變化趨勢。如圖6所示,結果顯示當年廣州市新房與二手房房價變化差距較小,總體持平,略微偏升。越秀區新房均價同比上漲16.8%,環比持平微升,比全市均價高出約159.4%。越秀區二手房均價同比上漲7.3%,環比持平微跌,高出全市約66.7%,樣本趨勢符合預期。

    3 建筑檔案爬蟲策略

    3.1 需求分析與策略解析

    檔案類爬蟲指與離散數值相關的信息。比如:符號、文字和圖像等。建筑師在日常學習、方案構思和項目研究時都會參考大量的建筑案例。在搜尋案例時不僅要獲取文字描述,也要案例圖片、視頻等多媒體數據。也有建筑學者需要下載電子書、期刊、論文等大篇幅字符類數據。當檔案型數據收集滿足一定數量和質量,通過人工分析或機械學習輔助解析,可以在一定程度分析出科學規律。數據表現的共性越多,數據內在聯系的越緊密。

    檔案爬蟲策略請求服務器與解析HTML的方式與數據類策略相近。在此基礎上,增加網頁列表的篩選和圖文資料的分渠處理兩步。這些內容重復判斷較多,寫成一條主程序既不簡潔也不便維護。因此在建立主程序前需要先封裝成幾個小程序。本文以zhulong.com為例,爬取展覽建筑案例,包括文字描述、圖片和鏈接,并按相同格式存儲同一檔案中。由于zhulong.com屬于大型綜合網站,架構復雜且信息繁多,需分層結構特征,避免信息干擾或報錯。該網站的內置搜索引擎實為全站搜索引擎,即沒有專門案例信息的高級搜索。傳統人工搜集展覽建筑案例的用戶只能手動翻頁,逐頁找尋符合要求的案例資料。因此在網頁列表時優先采用聚焦爬蟲,通過設置若干關鍵詞,讓計算機篩選出只符合要求的案例信息,提高搜索效率。過濾出網頁列表后再通過深度爬蟲請求并解析每個案例網頁的內部信息。分別定位文字和圖片數據后再按規定路徑儲存。

    3.2 檔案爬蟲實現

    如圖7所示,為案例檔案爬蟲程序核心代碼。首先分別封裝3條小程序:mkdir()通過傳入路徑參數新建檔案名為案例名的文件夾;getphoto()通過傳入單張圖片URL下載圖片并單獨存放;getpageinfo()通過傳入網頁列表下載案例圖文信息并自動排版到文檔中。主程序要求簡潔、穩定,因此核心代碼只負責獲取參數和傳入參數。通過分析網站特征聚焦至建筑案例統計頁(bbs.zhulong.com),并把分類限制在文化建筑案例(101010_group_201808/simple)。定位案例的題目(('a')['title'])和案例URL(('a')['href'])。設置關鍵詞“展覽”,令符合篩選規則的案例URL傳入網頁列表。網頁列表完成后傳入getpageinfo(),逐一提取列表中的每個案例進行深度爬蟲。進一步分析源代碼發現該網內部格式分歧較多,初步推測網站主站和內頁可能分包給不同的工程師構建。因此編程時要多次測試,把所有情況都考慮周全。先檢測案例內頁是否響應,如響應成功,啟用mkdir()建立檔案,否則返回錯誤代碼和案例URL。通過上級標記()中的所有

    標記定位文章文字內容,然后再通過標記()定位圖片。程序試運行發現所有圖片數據都會輸出兩遍,但沒有報錯。分析發現圖片的標記和夾頁(

    結果顯示截止2020年3月bbs.zhulong.com有274頁合共5462條關于文化類建筑的案例信息。本例爬蟲總耗時4118秒,共爬取有關展覽建筑案例83例。爬蟲程序自動完成從資料搜索、文檔建立到圖文儲存。資料數據完整度高,格式統一,具有較高的研究和再利用價值。

    4 結束語

    本文分析了建筑專業的常用網絡需求,總結了3類建筑類網站。在分析Python語言優勢和網絡聚焦爬蟲特征后,提出2種適用于建筑類網站的爬蟲策略。通過實例展示了爬蟲策略的深度和廣度。其中數據類爬蟲策略可快速定位數值型數據并規范整理到表格中,便于讀取和分析。檔案類爬蟲策略對多媒體文件有高效的處理能力,有利于建筑師查閱和深入研究。對大數據長期的觀測有助建筑從業人員更好地把握行業動態,調整自身,是實施決策前的重要基礎。

    參考文獻:

    [1]姜東民,張永正,陳雅靜.基于網絡爬蟲的房產價格信息獲取及分析——以青島地區為例[J].信息技術與信息化,2018(08):108-111+114.

    [2]秦思嫻,傅曉俊,余詠勝,等.基于Python實現地理國情房屋建筑專題信息提取[J].測繪與空間地理信息,2015,38(08):1-3+6.

    [3]裴蓮蓮,唐建智,畢小碩.多源空間大數據的獲取及在城市規劃中的應用[J].地理信息世界,2019,26(01):13-17.

    [4]張良,吳農.我國綠色建筑類網站的發展與現狀分析[J].河北工程大學學報(自然科學版),2012,29(01):37-40.

    [5]王琳琳,方立新,顧建新.建筑師網站的信息構建研究[J].情報探索,2008(04):60-62.

    [6]何愉舟,韓傳峰.基于物聯網和大數據的智能建筑健康信息服務管理系統構建[J].建筑經濟,2015,36(05):101-106.

    [7]葛金剛,劉晗晗.基于PYTHON的多軟件模型轉換程序的開發[J].工業建筑,2014,44(S1):324-326.

    [8]孫一鳧,呂浩宇,陳毅興,等.基于EnergyPlus-Python聯合模擬和強化學習算法的室內環境控制優化[J].建設科技,2019(24):52-58.

    [9]汪亮.對利用大數據掌握房地產市場價格的思考[J].中國房地產,2017(31):50-52.

主站蜘蛛池模板: 日本欧美视频在线观看| 亚洲黄网视频| 国产成人精品在线| 色综合婷婷| 国产极品美女在线播放| 国内精品视频| 亚洲一区色| 亚洲an第二区国产精品| 国产精品美乳| 欧美日本在线| a级毛片免费播放| 亚洲一区二区约美女探花| www中文字幕在线观看| 精品91在线| 中文字幕中文字字幕码一二区| 日韩国产无码一区| 色妞www精品视频一级下载| 18禁色诱爆乳网站| 国产午夜在线观看视频| 久久国产黑丝袜视频| 国产成人毛片| 国产精品一区二区久久精品无码| 麻豆AV网站免费进入| 亚洲妓女综合网995久久| 91热爆在线| 欧美中出一区二区| 97久久超碰极品视觉盛宴| 91丨九色丨首页在线播放 | 免费高清a毛片| 波多野结衣久久高清免费| 国产成人精品一区二区秒拍1o| 精品伊人久久久香线蕉| 国产女人18毛片水真多1| 亚洲一级毛片免费看| 伦伦影院精品一区| aaa国产一级毛片| 日韩精品一区二区三区视频免费看| 中文字幕在线播放不卡| 国产18在线| 喷潮白浆直流在线播放| 亚洲综合经典在线一区二区| 9cao视频精品| 青草精品视频| 亚洲成a人片77777在线播放| 国产亚洲欧美日韩在线一区二区三区| 91精品国产综合久久香蕉922| 97狠狠操| 国产屁屁影院| 亚洲成肉网| 九九这里只有精品视频| 国产视频一区二区在线观看| 黄色网页在线播放| 伊人狠狠丁香婷婷综合色| 欧美精品黑人粗大| 91青青草视频| 久久婷婷国产综合尤物精品| 青青草91视频| 午夜福利在线观看成人| 中国成人在线视频| 中文纯内无码H| 中字无码精油按摩中出视频| 91国内外精品自在线播放| 精品福利网| 国产精品第一区在线观看| 欧美激情视频二区| 熟女成人国产精品视频| 国产理论精品| 久青草国产高清在线视频| 国产喷水视频| 国产精品精品视频| 一区二区理伦视频| 日韩亚洲综合在线| 国产经典三级在线| 亚洲国产一成久久精品国产成人综合| 精品国产自在现线看久久| 久久精品国产精品青草app| 成人伊人色一区二区三区| 又粗又大又爽又紧免费视频| 精品欧美一区二区三区久久久| 亚亚洲乱码一二三四区| 国产在线观看成人91| 人人看人人鲁狠狠高清|