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

網絡眾源地理信息獲取與整合方法研究

2021-06-21 13:16:40唐天琪
現代測繪 2021年2期
關鍵詞:用戶信息

談 帥,唐天琪,高 雅

(江蘇省測繪研究所,江蘇 南京 210013)

0 引 言

大數據資源的快速增長以及數據挖掘和地理信息技術的逐步成熟為高效、智能化的網絡眾源地理信息獲取提供了數據和技術支撐[1]。時空大數據蘊含豐富多樣的地理信息,本文研究對象主要是政府公開數據和互聯網地理信息數據,但是政府公開數據并非都是完整的數據集,而互聯網數據更新周期短,數據信息量更加龐大,因此,迫切需要相關策略解決因數據結構復雜、數據保護措施等原因導致的互聯網地理信息數據獲取問題。

目前,網絡爬蟲工具層出不窮,但面對復雜的網頁結構、嚴格的API調用制度或需求不斷更新等問題,亟需一條完整的技術路線。黃文杰以標訊快車項目為研究目標,使用廣度和深度優先策略[2]。高波針對文本、柵格等不同類型的地理信息數據提出了不同的獲取方法[3]。劉石磊[4]、郭麗蓉[5]探討了一些常見的反爬蟲措施以及對應用了該類機制的網站進行爬蟲活動的手段和策略。雖然不少學者針對網絡爬蟲技術進行了研究,但是側重針對互聯網地理信息數據獲取的研究較少。

本文著重從數據獲取方式中的兩種類型——網頁型和API型[6]入手,從兩種渠道分別詳細闡述相關技術路線,為時空大數據的獲取提供思路,為地理國情監測工作提供數據方面的支撐,有利于促進新型基礎測繪實踐的快速開展。

1 互聯網地理信息數據特點

網絡地理信息服務與桌面地理信息系統軟件相比,前者存在明顯的限制:① 帶寬限制,地理信息通過互聯網、移動網絡傳輸的速率低于本地存儲設備以及穩定的內部網絡;② 客戶端處理能力限制,作為網絡地理信息的客戶端——網頁、移動設備,前者運行于瀏覽器內,出于安全考慮,瀏覽器中的網頁一般不能取得直接調用本地計算資源的能力,而移動設備在處理器、內存、存儲方面都不及桌面計算機;③ 客戶端的多樣性,不同瀏覽器支持Web與JavaScript標準存在差異、不同移動設備操作系統應用程序開發接口(API)與開發語言存在差異。

上述限制給互聯網地理信息數據帶來了復雜多樣的格式,并且需要具備獨立于應用程序或供應商、獨立于開發語言和環境、帶寬占用少等特點。常見的互聯網地理信息數據格式如下。

(1)JSON格式

JavaScript Object Notation(JSON)是一種瀏覽器/服務器之間傳輸的、公開的網絡數據傳輸數據標準,由鍵值對組成。目前在網絡地理信息服務領域,常用的JSON格式有GeoJSON和ArcGIS Server JSON 2種。

(2)XML格式

可擴展標記語言(XML)是一種用于標記電子文件使其具有結構性的標記語言。它可以用來標記數據、定義數據類型,是一種允許用戶對自己的標記語言進行定義的源語言。主要包括GML、Profile、Application schema、KML、GeoRSS和WKT 6種。

直接可用的互聯網地理信息并非顯而易見,往往需要進一步分析和挖掘。尤其是網頁中信息數據較為分散,其中蘊含的規律并非直觀可見,需要設計規則進行挖掘。本文根據互聯網地理信息的特點,將獲取數據的類型分為網頁型和API型。API型主要指通過調用API可以獲取并且需要處理格式的數據。網頁型主要指地理信息散落在網頁上,需要通過分析、挖掘網頁背后的結構和規律才能獲取的數據。

2 互聯網地理信息數據獲取技術路線

本文技術路線分為4大階段,即設計獲取規則、互聯網信息獲取、解析地理信息和數據整合(圖1)。設計獲取規則是基礎,有助于了解網站的架構及確定爬取URL、參數的設置。互聯網信息獲取的核心是有效地避開不同網站的保護機制,一是利用程序構建HTTP請求,可利用爬蟲偽裝技術或調用特定API把程序請求偽裝為瀏覽器請求,將互聯網信息獲取工具偽裝成普通瀏覽器規避爬蟲限制,并通過動態代理切換技術,自動更換代理,規避同一IP地址訪問頻率限制;二是瀏覽器自動化,借助驗證碼自動獲取等技術,利用Selenium工具,針對需要交互式驗證(比如輸入驗證碼)的情況,配合計算機視覺識別驗證碼并自動登錄。解析地理信息和數據整合為后期并行計算、分布式存儲提供有力的數據支撐。

圖1 互聯網地理信息數據獲取總體技術路線

3 關鍵技術內容

3.1 獲取規則分析

本文詳細闡述兩種互聯網地理信息數據爬取方式:① 通過訪問網頁的HTML代碼,從中抓取所需節點上的數據;② 通過網站提供的API調用獲取所需數據。實際運用過程中,網絡爬蟲系統一般是幾種爬蟲技術相結合實現的。

3.1.1 信息架構分析

首先分析網站的信息架構,整理HTML源文件[7],結合后期數據需求,建立目標數據集與互聯網站點信息架構之間的映射關系,找出可以用于匹配的特征,選擇合適的獲取方式并設計對應的獲取規則(包括URL規則、網絡信息爬取層次規則)。

以分析鏈家(南京)官網二手房頁面為例,打開“Chrome瀏覽器開發者工具”中的Elements,查看網頁結構如圖2所示,網頁中“位置”選項被層層包裹在div、d1等標簽中。網頁按照“城市→區域/地鐵→房屋屬性組合(售價、面積、房型等)”的架構進行設置,如圖3所示。

圖2 網頁架構代碼

圖3 網頁架構組織

3.1.2 URL結構分析

研究目標路徑的規則。由于不同城市情況的差異,URL的設置如下:https://{城市}.lianjia.com/ershoufang/{區域或地鐵} /{房屋屬性,分頁組合} /。

3.1.3 URL參數收集

通過勾選不同條件,查看上方地址欄中顯示網址,總結出標簽與URL路徑之間的關系(表1)。

表1 鏈家(南京)官網二手房網址解析

3.1.4 URL構建

以查找“位于鼓樓區草場門大街,60~90 m2的二室朝南,有電梯,售價在200~300萬元之間的普通住宅”為例,網址如圖4所示。選擇條件先后與url中路徑順序無關。

圖4 網址解析

3.2 互聯網信息獲取

雖然在絕大多數情況下用戶使用互聯網服務是免費的,但是幾乎所有的互聯網信息提供商都采取了數據保護措施[8],例如,識別數據爬蟲發出的請求并拒絕訪問、拒絕來自同一IP的頻繁訪問、限制查詢返回的記錄數、對頻繁請求要求重新登錄并輸入驗證碼等,或隱藏數據真實頁面URL,只能通過腳本交互方式打開數據頁面等等。本文采用2種規避數據保護策略,即利用程序構建HTTP請求(包含爬蟲偽裝和特定API調用2種方法)和瀏覽器自動化(驗證碼自動獲取技術)。

3.2.1 利用程序構建HTTP請求

(1)爬蟲偽裝技術

User Agent中文名為用戶代理,是Http協議中頭域的一部分。它是一個特殊字符串頭,是一種向訪問網站提供你所使用的瀏覽器類型及版本、操作系統及版本、瀏覽器內核等信息的標識[4]。通過該標識,用戶所訪問的網站可以顯示不同的排版從而為用戶提供更好的體驗或者進行信息統計。一般網站通過分析用戶請求的Headers信息,利用服務器查看Headers中的User Agent來判斷是誰在訪問。如果是互聯網信息工具則會被禁止訪問,因此,為了隱藏身份,需要手動設置User Agent,偽裝成瀏覽器進行訪問。在創建Request對象的時候,傳入Headers參數,有如下2種方法設置User Agent:① 在創建Request對象的時候,填入Headers參數(包含User Agent信息),這個Headers參數要求為字典;② 在創建Request對象的時候不添加Headers參數,在創建完成之后,使用add_header()的方法,添加Headers。

User Agent設置好后,還應考慮一個問題,程序的運行速度快,如果利用爬蟲程序從網站爬取東西,一個固定IP的訪問頻率遠高于實際人為操作。所以一些網站會設置一個IP訪問頻率的閾值來判斷是人還是程序在訪問。因此,需要動態設置代理IP來規避訪問頻率的限制。

(2)特定API調用

通過調用API獲取網站數據的方式較為簡單直接,根據相關說明文檔可以快速了解網站架構,便于規則的制定和代碼的編寫。但在調用過程中,網站會對調用的頻率、次數進行限制,需要根據網站規定進行設置,如申請多個訪問服務的依據(Key)或采用間歇性、適當休眠的模式進行訪問。

以調用百度地圖開放平臺的WEB服務API(路線規劃API v2.2.1)為例,分為3個步驟:① 申請密鑰ak(類似于Key)作為訪問服務的依據;② 拼寫發送HTTP請求的URL,需使用上一步申請的ak;③ 接收HTTP請求返回的數據(JSON或XML格式),根據返回值說明解析數據。根據規定,未認證用戶(一個普通ak)每日只可訪問2 000次,每秒并發20次,認證用戶每日可訪問30 000次,每秒并發50次,因此,要想多次調用API需要申請多個ak進行訪問。此外,還可以通過生成隨機數作為等待時間,以達到降低訪問頻率的目的。

3.2.2 瀏覽器自動化

目前,不少網站在用戶提交信息等登錄和輸入的頁面上使用了驗證碼技術,其實現的方法一般是在頁面上顯示一幅圖片,要求用戶肉眼識別圖片中的信息并將該信息作為輸入的一部分進行提交。頁面上顯示的這幅圖片一般是一串隨機產生的數字或符號,并且被添加了用于防止識別的背景。驗證碼的主要目的是防止惡意用戶利用自動工具(機器人)對用戶口令進行暴力破解、惡意注冊,或是向網站發布令人厭煩的廣告信息等。但與此同時,該技術的使用使得網絡爬蟲面臨了較大的困難。本文利用Selenium工具截取頁面(Java環境),定位驗證碼元素位置,借助在線OCR服務,在百度AI中識別驗證碼圖片中的文字,具體步驟如下。

(1)獲取HTML標簽元素

在WebDriver中定位元素可以在WebDriver實例本身或WebElement上完成[9]。每個語言綁定都會顯示“查找元素”和“定位元素”方法。前者返回與查詢匹配的WebElement對象,如果找不到這樣的元素,則會拋出異常提示。后者返回WebElements的列表,如果沒有DOM元素與查詢匹配,則可能為空。“查找”方法采用名為“By”的定位器或查詢對象。常見的定位方法主要有:按ID、按類名、按標簽名稱、按名稱、通過鏈接文本、通過CSS、通過XPath、使用JavaScript和通過標簽中的文本。例如,按ID定位是selenium定位方式中最有效、首選的方法,利用HTML元素上類的ID查找效率較高,示例代碼如圖5所示。具體還要根據實際情況進行組合使用。

圖5 按ID定位

(2)模擬用戶進行操作

在從互聯網爬取數據時,除了獲取網頁上的數據,還有一個重要的步驟是模擬用戶進行操作。比如刷新、前進、后退、文本輸入、點擊“搜索”按鈕、勾選查詢條件、下拉菜單等。例如,模擬“用戶輸入+填寫表單”操作,WebDriver包含一個名為“Select”的支持類,它提供了處理SELECT元素有用的交互方法,示例代碼如圖6所示。

圖6 模擬“用戶輸入+填寫表單”操作

(3)訪問頻繁出現驗證碼

當進行頻繁訪問時,網站會出現驗證碼驗證保護的情況,因此,通過Selenium截取頁面傳入百度AI進行識別。

(4)將截取的圖片傳到百度AI中進行識別

利用通用圖像分析功能,POST方式請求服務,用于通用物體及場景識別,即對于輸入的一張圖片(可正常解碼,且長寬比適宜),輸出圖片中的多個物體及場景標簽,返回數據為JSON格式。

3.3 解析地理信息數據

將前文獲取到的地理信息數據進行分類,對XML、HTML、JSON 3種格式的數據進行解析。

XML文件解析方法有DOM解析、SAX解析、JDOM解析、DOM4J解析4種。其中前2種屬于基礎方法,后2種屬于擴展方法,是在基礎方法上擴展出來的,只適用于Java平臺。DOM4J是JDOM的一種智能分支,也是一個開放源碼的文件,它合并了許多超出基本XML文檔表示的功能,可處理XML、XPath和XSLT,性能優異、靈活性好、功能強大。

利用Beautiful Soup工具解析HTML文檔,可將復雜文檔轉換成一個復雜的樹形結構,從而更加快速、準確地獲取標簽的內容。每個節點都是Python對象,所有對象可以歸納為4種:Tag類、Beautiful Soup類、NavigableString類和Comment類。

JSON數據解析主要有2種思路,一是針對單一格式的JSON數據采用原生解析的方法;二是針對嵌套復雜的JSON數據采用第三方工具解析。JSON主要有以下3種基本類型:① “大括號{}”類型;② “中括號”類型;③ “組合{…}”型。通過遍歷字符串中的字符,并根據特助字符,比如{},,:號等進行區分,{}是字典,表示的是數組,:號是字典的鍵和值的分水嶺,最后是將JSON數據轉化為字典,然后使用KVC將字典轉為model。如果看到是{},使用JSONObject;如果看到的是,使用JSONArray解析。Gson是Google提供的用來在Java對象和JSON數據之間進行映射的Java類庫。可以將一個JSON字符串轉成一個Java對象,或者反過來。Gson提供了fromJson()和toJson()兩個直接用于解析和生成的方法,前者實現反序列化,后者實現了序列化。通過獲取JsonReader對象解析JSON數據,把JSON數據映射成一個對象,使用Gson對象的fromJson()方法獲取一個對象數組進行操作。

3.4 數據整合

在獲取數據并進行解析之后,面對后期不同應用需求,需要對數據進行整合,包括數據清洗、空間化、一致性處理等操作。

3.4.1 數據清洗

其核心內容是查漏、補缺、去重,對照數據要求,查找缺失屬性值的數據,通過關聯信息抓取的方式補充屬性值,如果缺失的屬性值是必要屬性則補充打上標記。進行去重處理是檢查是否存在重復的記錄,刪除重復的記錄。

3.4.2 空間化

對通過互聯網獲取的XML、JSON、HTML數據進行解析,對有坐標的數據直接構建幾何對象,對不包含坐標的數據,通過抓取關聯信息獲取相應坐標信息或者地名地址匹配等空間匹配方法的方式構建幾何對象。對于有坐標的數據來說,根據坐標值對非空間數據直接空間化。例如,在EXCEL或CSV格式中存儲了大量X、Y坐標,利用一個或多個2DPointAdder轉換器,添加2維坐標點,可以是折線或構造多邊形。

3.4.3 一致性處理

一致性處理包括屬性一致性與空間一致性,根據實際需求,有針對性地將數據進行“重命名、復制、增加、刪除”等操作。① 屬性一致性:對照數據字典的要求,在編碼、屬性賦值等方面處理為符合要求的數據。如在獲取鏈家(南京)官網數據的過程中,對“日期屬性”進行格式轉換和屬性篩選。② 空間一致性:主要體現在幾何類型和空間參考的一致性上。空間參考一致性主要針對坐標進行變換,為保證轉換前后數據圖層、要素一致,提高生產效率,先對數據進行接邊檢查,在進行坐標轉換后,進行接邊融合和重新分幅剪裁。

4 應用實例

根據上述技術路線及內容,本文開發了互聯網房產數據整合工具(圖7)。用戶通過頁面提交感興趣的區域范圍,系統自動爬取鏈家、房天下等互聯網房產網中二手房信息,爬取完成后生成shapefile文件供用戶下載。獲取的房產信息可以為地理國情分析評價指標設置提供支撐,為分析城市住區規模時空特征與演化規律提供依據。

圖7 房產數據整合工具

5 結 語

本文詳細闡述了互聯網地理信息獲取的技術路線,將數據獲取分為兩種類型——網頁型和API型,從設計獲取規則、互聯網信息獲取、解析地理信息、數據整合4個方面闡述了如何根據需求設計相應爬取數據的路線,為地理國情監測提供數據方面的支持,有利于進一步開展時空大數據挖掘方面的研究。

猜你喜歡
用戶信息
訂閱信息
中華手工(2017年2期)2017-06-06 23:00:31
關注用戶
商用汽車(2016年11期)2016-12-19 01:20:16
關注用戶
商用汽車(2016年6期)2016-06-29 09:18:54
關注用戶
商用汽車(2016年4期)2016-05-09 01:23:12
Camera360:拍出5億用戶
創業家(2015年10期)2015-02-27 07:55:08
100萬用戶
創業家(2015年10期)2015-02-27 07:54:39
如何獲取一億海外用戶
創業家(2015年5期)2015-02-27 07:53:25
展會信息
中外會展(2014年4期)2014-11-27 07:46:46
信息
建筑創作(2001年3期)2001-08-22 18:48:14
健康信息
祝您健康(1987年3期)1987-12-30 09:52:32
主站蜘蛛池模板: 成人午夜久久| 亚洲人成网站色7799在线播放| 凹凸精品免费精品视频| 精品无码国产自产野外拍在线| 被公侵犯人妻少妇一区二区三区| 国产国产人成免费视频77777| 国产成人啪视频一区二区三区 | 一级毛片免费不卡在线视频| 亚洲丝袜第一页| 国产欧美日韩在线一区| 精品剧情v国产在线观看| 伊伊人成亚洲综合人网7777| 精品成人一区二区三区电影| 亚洲a级在线观看| 欧美在线三级| m男亚洲一区中文字幕| 成人国产精品视频频| 欧美日韩综合网| 婷婷五月在线| 91极品美女高潮叫床在线观看| 国产丝袜第一页| 99久久国产精品无码| 精品一区二区三区无码视频无码| 国产啪在线| 国产亚洲现在一区二区中文| 日本人真淫视频一区二区三区| 亚洲第一视频网| 亚洲天堂首页| 国产午夜人做人免费视频中文| 精品第一国产综合精品Aⅴ| 日日噜噜夜夜狠狠视频| 久久精品视频亚洲| 热re99久久精品国99热| 又爽又黄又无遮挡网站| 国产成人喷潮在线观看| 亚洲无码视频图片| 亚洲欧美在线看片AI| 国产制服丝袜无码视频| 四虎在线观看视频高清无码| 国产精品成人AⅤ在线一二三四| 亚洲日本精品一区二区| 天堂成人av| 欧美日韩精品一区二区在线线| 免费在线色| 热热久久狠狠偷偷色男同| 九色综合视频网| 噜噜噜久久| 无码一区中文字幕| 婷婷色婷婷| 一级黄色片网| 韩日无码在线不卡| 国产又黄又硬又粗| 久久人午夜亚洲精品无码区| 国产人免费人成免费视频| 高清大学生毛片一级| 国产不卡网| 亚洲不卡影院| 99视频在线观看免费| 国产手机在线观看| 午夜福利免费视频| 在线观看亚洲成人| 99热在线只有精品| 在线a视频免费观看| 欧美在线网| 午夜视频在线观看免费网站| 中文字幕亚洲精品2页| 婷婷亚洲天堂| 欲色天天综合网| 99久久亚洲综合精品TS| 久久久久久高潮白浆| 国产精品美人久久久久久AV| 欧美a在线视频| 久久久久国产精品熟女影院| 日韩午夜片| 91探花国产综合在线精品| www中文字幕在线观看| 国产97视频在线| 久久这里只有精品23| 国产精品吹潮在线观看中文| 四虎精品黑人视频| 欧美三级视频在线播放| 亚洲国产日韩在线成人蜜芽|