2013-10-25 115 views
1

我負責創建一個網頁抓取軟件,我不知道哪裏可以開始。任何幫助將不勝感激,甚至只是告訴我這些數據是如何組織的,或者網站使用的數據佈局的「類型」會有所幫助,因爲我可以通過Google搜索該術語。Web刮,數據挖掘,數據提取

http://utilsub.lbs.ubc.ca/ion/default.aspx?dgm=x-pml:/diagrams/ud/Default/7330_FAC-delta_V2.4.1/7330_FAC-delta_V2.4.1-pq.dgm&node=Buildings.Angus_addition&logServerName=QUERYSERVER.UTIL2SUB&logServerHandle=327952

http://utilsub.lbs.ubc.ca/ion/default.aspx?dgm=x-pml:/diagrams/ud/network.dgm&node=Buildings.AERL&unique_id=75660a13-5145-42d5-b661-a50f328306c7&logServerName=QUERYSERVER.UTIL2SUB&logServerHandle=327952

基本上,我需要從本網站提取 「和諧價值觀」。具體來說,我需要顯示在第二個鏈接上的9個數字。這些數字不會傳遞給HTML,它們似乎每隔幾秒就會自動更新一次。我需要能夠在更新時實時提取這些值。即使這是不可能的,我仍然需要表明,做這種網絡抓取是不可能的。我沒有給任何後端API提供任何API,也不知道他們的網站如何接收數據。

總的來說,任何幫助,將不勝感激,即使它只是一些簡單的搜索條件,使我在正確的方向。我目前在網頁抓取/數據挖掘方面的無能/

+0

「數字不傳遞給HTML ..」 - 抱歉,但證明不正確。 「查看源代碼」顯示實際的數字,即使在我的iPad上。你'只'必須找到他們,他們周圍有很多*絨毛。如果您想「實時」抓取它們,可以使用'curl'或其他wget實用程序來發布頻繁的請求以加載html,然後查找encomapssing代碼以提取數字。 – usr2564301

+0

我推薦一個網絡搜索「網頁抓取」和你想要/感到最舒服的編程語言的名字,並從那裏刺穿它。如果*然後*你無法弄清楚,在這裏發表具體問題可能會得到更好的答案。 –

回答

3

網頁抓取

對於網站解析HTML被另外稱爲屏幕抓取。這是一個訪問外部網站信息的過程(信息必須是公開的 - 公共數據)並根據需要進行處理。例如,如果我們想要從不同網站獲得諾基亞Lumia 1020的平均評分,我們可以取消所有網站的評分,並計算我們代碼中的平均分數。因此,我們可以說,作爲一般的「用戶」,您可以將其作爲「公共數據」,您可以輕鬆地使用HTML敏捷軟件包取消該功能。

試試這些:

ASP.NETHTMLAgilityPack(開放源碼庫)

Scraping HTML DOM elements using HtmlAgilityPack (HAP) in ASP.NET

PHP &捲曲WEB SCRAPING WITH PHP & CURL

個Node.js的Screen Scraping with Node.js

YQL &阿賈克斯Screen scraping using YQL and AJAX

+0

感謝您的幫助,我試圖使用YQL控制檯,但它似乎並不需要我需要的實際實時數據。另一個問題是,這些方法中的哪一種可以實時獲取這些數據? – Jay

+0

這可能是您的解決方案:http://www.lightstreamer.com/,但我不確定。因爲我沒有累。但他們表示,他們可以實時取消數據並看到他們的演示,看起來他們真的這樣做。 –

+0

謝謝,我已經下載了他們的軟件,現在看它,它看起來很有希望。我會不斷更新。謝謝你的幫助! – Jay

0

第二個環節是從API中提取信息每隔幾秒鐘。使用谷歌瀏覽器,你可以使用開發工具檢查這樣的事情,然後點擊「網絡」。然後你可以看到發送了哪些請求,並且可以通過右鍵單擊請求 - >複製爲CURL輕鬆地複製它們。然後你得到這樣的東西,其中包括請求在CURL命令中發送的所有標題和發佈數據。這是第二個鏈接正在呼叫的內容:

curl 'http://utilsub.lbs.ubc.ca/ion/default.aspx/GetRTxmlData' -H 'Cookie: ASP.NET_SessionId=oq0qiwuqbb3g3453jvyysvjx' -H 'Origin: http://utilsub.lbs.ubc.ca' -H 'Accept-Encoding: gzip,deflate,sdch' -H 'Host: utilsub.lbs.ubc.ca' -H 'Accept-Language: de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4' -H 'User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36' -H 'Content-Type: application/json; charset=UTF-8' -H 'Accept: application/json, text/javascript, */*; q=0.01' -H 'Referer: http://utilsub.lbs.ubc.ca/ion/default.aspx?dgm=x-pml:/diagrams/ud/network.dgm&node=Buildings.AERL&unique_id=75660a13-5145-42d5-b661-a50f328306c7&logServerName=QUERYSERVER.UTIL2SUB&logServerHandle=327952' -H 'X-Requested-With: XMLHttpRequest' -H 'Connection: keep-alive' --data-binary $'{\'dgm\':\'x-pml:/diagrams/ud/network.dgm\',\'id\':\'75660a13-5145-42d5-b661-a50f328306c7\',\'node\':\'\'}' --compressed 

API返回包裝在JSON中的XML。

您可能想使用CURL與PHP作爲codeSpy說,你只需要設置所有標題和發佈數據並正確複製請求,否則API不會響應您的請求。

2

嘗試http://code.google.com/p/crawler4j/ 這是非常容易使用,你必須重寫一個類是Controller.java類。

您只需要指定種子,併爲爬網的每個網站返回兩個變量中的文本和HTML數據。