亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        建筑類網(wǎng)站聚焦爬蟲(chóng)策略研究

        2020-11-23 01:44:03林汨圣王揚(yáng)
        科技創(chuàng)新與應(yīng)用 2020年33期
        關(guān)鍵詞:網(wǎng)絡(luò)爬蟲(chóng)建筑學(xué)

        林汨圣 王揚(yáng)

        摘? 要:在工作和研究中持續(xù)更新大量的資料和數(shù)據(jù)是建筑師的職業(yè)基礎(chǔ)。傳統(tǒng)人工搜索互聯(lián)網(wǎng)的方式工作量大且挖掘率低,對(duì)網(wǎng)站數(shù)據(jù)源的利用往往不夠充分。國(guó)內(nèi)大部分建筑類網(wǎng)站采用HTML文本標(biāo)記數(shù)據(jù),對(duì)HTML采用網(wǎng)絡(luò)聚焦爬蟲(chóng)有助于建筑師高效定位并規(guī)范化儲(chǔ)存專業(yè)數(shù)據(jù)。通過(guò)對(duì)建筑類主流網(wǎng)站結(jié)構(gòu)特征進(jìn)行分析,總結(jié)建筑學(xué)3種專業(yè)爬蟲(chóng)需求?;赑ython的語(yǔ)言特征,提出公開(kāi)數(shù)據(jù)類和建筑檔案類2種爬蟲(chóng)策略。實(shí)測(cè)結(jié)果表明爬蟲(chóng)策略具有數(shù)據(jù)采集實(shí)時(shí)性好、易管理維護(hù)的優(yōu)點(diǎn),同時(shí)均運(yùn)行高效且穩(wěn)定,可為建筑專業(yè)大數(shù)據(jù)分析提供更多高質(zhì)量的數(shù)據(jù)源。

        關(guān)鍵詞:聚焦爬蟲(chóng);網(wǎng)絡(luò)爬蟲(chóng);HTML;Python;建筑學(xué)

        中圖分類號(hào):TU17? ? ? ? ?文獻(xiàn)標(biāo)志碼:A? ? ? ? ?文章編號(hào):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

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

        1 建筑專業(yè)爬蟲(chóng)需求與實(shí)現(xiàn)技術(shù)

        1.1 建筑學(xué)網(wǎng)絡(luò)需求

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

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

        1.2 基于Python的網(wǎng)絡(luò)爬蟲(chóng)技術(shù)

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

        Python是一門面向?qū)ο缶幊蹋∣bject Oriented Programming)的語(yǔ)言,其具象和簡(jiǎn)潔的特性更適合跨專業(yè)編程人員閱讀使用。Python跨平臺(tái)廣、開(kāi)源代碼庫(kù)量大,從爬蟲(chóng)、數(shù)據(jù)分析到機(jī)器學(xué)習(xí)、圖像識(shí)別等,可以輔助建筑專業(yè)完成機(jī)械性的重復(fù)工作[7-8]。通常在建筑類數(shù)據(jù)的爬蟲(chóng)中,搜索對(duì)象都是具象且明確的,操作思路是清晰明確的。使用Python爬蟲(chóng)可以盡可能接近建筑師思維完成工作。Python不一定最適應(yīng)爬蟲(chóng),但很大程度是最適合建筑師使用的編程語(yǔ)言?;赑ython編寫的爬蟲(chóng)程序不僅是獲取專業(yè)數(shù)據(jù)的良好基礎(chǔ),也是大數(shù)據(jù)分析的科學(xué)基礎(chǔ)。本文借助Python3語(yǔ)言引用requests、BeautifulSoup、openpyxl、os等代碼庫(kù)編寫爬蟲(chóng)代碼。其中requests用于請(qǐng)求URL數(shù)據(jù),BeautifulSoup用于解析HTML文檔,其他代碼庫(kù)聯(lián)動(dòng)用于獲取并規(guī)范化儲(chǔ)存數(shù)據(jù)。

        1.3 適應(yīng)建筑專業(yè)需求的爬蟲(chóng)策略

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

        如表1所述,建筑類網(wǎng)絡(luò)資源豐富且專業(yè)性較強(qiáng)。對(duì)應(yīng)的建筑學(xué)網(wǎng)絡(luò)爬蟲(chóng)需求主要有3種:圖文檔案資料,數(shù)值型數(shù)據(jù),批量同類型素材。通過(guò)數(shù)據(jù)類爬蟲(chóng)策略和檔案類爬蟲(chóng)策略可基本解決上述需求。其中數(shù)據(jù)類爬蟲(chóng)以聚焦優(yōu)先,檔案類爬蟲(chóng)以深度優(yōu)先。通過(guò)調(diào)研發(fā)現(xiàn),我國(guó)政府門戶類網(wǎng)站(*.gov.cn)內(nèi)大部分的公開(kāi)數(shù)據(jù)信息已經(jīng)過(guò)整理。用戶通過(guò)公民信息注冊(cè)登錄即可獲取信息。目前爬蟲(chóng)對(duì)這類網(wǎng)站針對(duì)性不強(qiáng),同時(shí)也不提倡對(duì)這類網(wǎng)站進(jìn)行爬蟲(chóng)。本文通過(guò)兩個(gè)實(shí)例分別實(shí)現(xiàn)數(shù)據(jù)類爬蟲(chóng)和檔案類爬蟲(chóng)策略。

        2 公開(kāi)數(shù)據(jù)爬蟲(chóng)策略

        2.1 數(shù)據(jù)請(qǐng)求與解析

        數(shù)據(jù)類爬蟲(chóng)指與連續(xù)數(shù)值關(guān)聯(lián)度較高的信息。比如:高度、面積和時(shí)間等。數(shù)據(jù)的影響因子涉及越全面,數(shù)據(jù)變動(dòng)規(guī)律的預(yù)測(cè)越準(zhǔn)確[9]。因此數(shù)據(jù)類爬蟲(chóng)策略往往優(yōu)先限定提供數(shù)據(jù)樣本的網(wǎng)頁(yè)目錄。如非必要不深入網(wǎng)頁(yè)內(nèi)頁(yè),避免數(shù)據(jù)報(bào)錯(cuò)。本文以anjuke.com為例,搜索2020年3月廣州市越秀區(qū)二手房的房源信息。房?jī)r(jià)及其相關(guān)信息是時(shí)刻隨著市場(chǎng)交易變動(dòng)的。通過(guò)爬蟲(chóng)保持量大且長(zhǎng)期的數(shù)據(jù)庫(kù)才能基本滿足大數(shù)據(jù)的研究基礎(chǔ)。該網(wǎng)站網(wǎng)絡(luò)結(jié)構(gòu)層次清晰,數(shù)據(jù)量大且實(shí)時(shí)更新速度較快,能保證爬蟲(chóng)的長(zhǎng)期穩(wěn)定運(yùn)作。

        尊重robots協(xié)議的科學(xué)爬蟲(chóng)是實(shí)現(xiàn)用戶與服務(wù)器間良性互動(dòng)的基礎(chǔ)。robots協(xié)議(robots exclusion protocol,網(wǎng)絡(luò)爬蟲(chóng)排除標(biāo)準(zhǔn))是互聯(lián)網(wǎng)爬蟲(chóng)的一項(xiàng)公認(rèn)的道德規(guī)范,用于公示允許爬蟲(chóng)的內(nèi)容。如圖1所示anjuke.com的部分robots協(xié)議內(nèi)容,禁止了具體目錄下的爬蟲(chóng)。本文對(duì)建筑類網(wǎng)站爬蟲(chóng)均遵循網(wǎng)絡(luò)協(xié)議,研究重點(diǎn)在于準(zhǔn)確、便捷、穩(wěn)定地提取所需的有效信息,而不刻意強(qiáng)調(diào)爬蟲(chóng)速度。程序內(nèi)合理設(shè)置限速(Crawl-delay),避免對(duì)網(wǎng)站服務(wù)器造成負(fù)擔(dān)。盡管合理設(shè)置了限速,爬蟲(chóng)策略依然比人工搜索高效。

        該網(wǎng)站主要的源數(shù)據(jù)基本記錄在HTML文檔中。因此,對(duì)HTML數(shù)據(jù)的爬蟲(chóng)策略主要分為四步:發(fā)出請(qǐng)求、解析文檔、定位數(shù)據(jù)、規(guī)范存儲(chǔ)。首先,通過(guò)網(wǎng)站的URL向網(wǎng)站服務(wù)器發(fā)出請(qǐng)求,征求服務(wù)器響應(yīng)。如圖2、3所示,當(dāng)Request Method顯示為“GET”時(shí),即為可請(qǐng)求的HTML文檔。Status_Code顯示為“2XX”時(shí)代表服務(wù)器成功響應(yīng)了請(qǐng)求。當(dāng)響應(yīng)成功后,服務(wù)器返回的是一個(gè)二進(jìn)制數(shù)據(jù)包,根據(jù)編碼方式進(jìn)行解碼即可獲取HTML文檔數(shù)據(jù)。

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

        2.2 數(shù)據(jù)爬蟲(chóng)實(shí)現(xiàn)

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

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

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

          當(dāng)程序穩(wěn)定適應(yīng)平臺(tái)的大部分?jǐn)?shù)據(jù)后,該策略通過(guò)廣度爬蟲(chóng)可拓寬數(shù)據(jù)的豐富性和時(shí)效性。比如,依然以該網(wǎng)站為例,橫向獲取2019年4月至2020年3月廣州全市與廣州越秀區(qū)每月的新房和二手房均價(jià),綜合計(jì)算后生成折線圖對(duì)比一年內(nèi)房?jī)r(jià)變化趨勢(shì)。如圖6所示,結(jié)果顯示當(dāng)年廣州市新房與二手房房?jī)r(jià)變化差距較小,總體持平,略微偏升。越秀區(qū)新房均價(jià)同比上漲16.8%,環(huán)比持平微升,比全市均價(jià)高出約159.4%。越秀區(qū)二手房均價(jià)同比上漲7.3%,環(huán)比持平微跌,高出全市約66.7%,樣本趨勢(shì)符合預(yù)期。

          3 建筑檔案爬蟲(chóng)策略

          3.1 需求分析與策略解析

          檔案類爬蟲(chóng)指與離散數(shù)值相關(guān)的信息。比如:符號(hào)、文字和圖像等。建筑師在日常學(xué)習(xí)、方案構(gòu)思和項(xiàng)目研究時(shí)都會(huì)參考大量的建筑案例。在搜尋案例時(shí)不僅要獲取文字描述,也要案例圖片、視頻等多媒體數(shù)據(jù)。也有建筑學(xué)者需要下載電子書、期刊、論文等大篇幅字符類數(shù)據(jù)。當(dāng)檔案型數(shù)據(jù)收集滿足一定數(shù)量和質(zhì)量,通過(guò)人工分析或機(jī)械學(xué)習(xí)輔助解析,可以在一定程度分析出科學(xué)規(guī)律。數(shù)據(jù)表現(xiàn)的共性越多,數(shù)據(jù)內(nèi)在聯(lián)系的越緊密。

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

          3.2 檔案爬蟲(chóng)實(shí)現(xiàn)

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

          標(biāo)記定位文章文字內(nèi)容,然后再通過(guò)標(biāo)記()定位圖片。程序試運(yùn)行發(fā)現(xiàn)所有圖片數(shù)據(jù)都會(huì)輸出兩遍,但沒(méi)有報(bào)錯(cuò)。分析發(fā)現(xiàn)圖片的標(biāo)記和夾頁(yè)(

          久久综合亚洲色社区| 香蕉视频www.5.在线观看| 国产人妻精品一区二区三区不卡 | 亚洲熟妇av一区| 美女把尿囗扒开让男人添| 乱人伦中文无码视频| 亚洲精品久久久久高潮| 高清无码精品一区二区三区| 成人在线视频自拍偷拍| 狼狼色丁香久久女婷婷综合| 免费久久99精品国产| 欧美乱大交xxxxx潮喷| 亚洲xxxx做受欧美| 久久精品国产亚洲AV高清特级| 免费大学生国产在线观看p| 粗大挺进孕妇人妻在线| 精品人妖一区二区三区四区| 日本无码人妻波多野结衣| 日本午夜国产精彩| 精品蜜臀国产av一区二区| 亚洲中文av中文字幕艳妇| 公与淑婷厨房猛烈进出| 天堂影院一区二区三区四区| 欧美综合图区亚洲综合图区| 美腿丝袜中文字幕在线观看| 日韩av精品视频在线观看| 天天弄天天模| 91av国产视频| 欧美在线Aⅴ性色| 亚洲激情综合中文字幕| 亚洲av成人片无码网站| 18禁裸男晨勃露j毛免费观看| 精品国产亚欧无码久久久| 一区二区免费中文字幕| 99视频在线精品免费观看6| 国产精品久久毛片av大全日韩| 亚洲视频99| 亚洲一区二区三区99区| av手机免费在线观看高潮| 久久久久亚洲av成人片| 国产欧美日韩综合精品二区|