• 瀏覽: 6,301
  • 回覆: 37
  • 追帖: 6
[隱藏]
是咁的,前兩日有樓主出 post 問如何採集某網站數據。今日等我分享一下我的做法比大家參考⋯⋯

現時一般數據途徑可以大慨分為2類

1: 由外部直接採集返黎,例如:我想搵天氣數據,分析黎緊幾日會唔會落雨,而又不能直接下載返回,只有網頁,一頁一頁咁。

2: 內部數據庫,例如:客戶經銀行系統做轉賬,繳費等等,這些數據都會存在銀行數據庫。例如:我想分析這些數據,去決定邊d產品適合邊d客戶,而唔係全部客戶一次 cold call,漁翁撒網⋯⋯

今日先分享第一類數據採集,如果想收集第一類網頁數據,首先要知道現時這些網頁其實主要有2種:

1: 非 javascript 或 dynamic 再加載網頁,這類收集比較容易,普通 e.g. python urllib request urlopen就可以返回相關資料⋯⋯

2: 經 javascript或 dynamic再加載的網頁,現時這類網頁越來越常見,普通 url request只能返回未 dynamic 加載的內容,dynamic 部分未能提取。

今日重點就係le 個第二類。

要提取 dynamic 資料,現時都有好多做法,例如,想見 python, java 等等⋯⋯考慮過多種方法,我分享這個是用 java 搭 selenium搭 phantomjs拾 jsoup……用 eclipse 同 maven哈哈

揀這個組合其實係考慮到

1: 對開發過程中調試debug容易程度
python 係 scripting 方式,要寫完,然後,行一行先睇到結果,但開發過程中,我哋經常要 debug,例如睇吓某一刻,某個變量既資料,python,就要先 print出,超麻煩。如果唔係就要用 pycharm等 IDE。用 java這些,就容易 set breakpoint⋯⋯

2: project library dependency 加載容易程度
要program行得到,通常要加載唔同 library,python 要外部 pip install。用 maven,只要響 pom.xml打返 group id artifact id 同 version,佢就自己識下載⋯⋯

3: 及後期處理容易程度
例如:收集後想要放入 database,maven只要加返例如 spring jpa,就可以好簡單做到⋯⋯

4: 當然仲有工具既價錢,這個組合都是免費的。


數據採集既基本 flow

下載 -> 拆解 -> 分析

我建議一定改成為

下載 (如果已存在,跳過)-> 儲存起來 (output_29210217_01_HK_A123.html UTF-8)-> 拆解 -> 分析

下載一次當然冇問題,但如果用程序不斷下載,會對網站做成不必須負載,所以,我哋對下載這步一定額外留意,並且,每下載一個,必須要 sleep一兩秒。如果已下載就跳過。

要採集網頁 selenium 係好常用的,通過 selenium,佢會經 webdriver再扮普通 browser 例如 chrome, firefox, safari, IE去訪問網頁,這樣就可以取到網頁源碼⋯⋯

因為想揀個比較 lightweight 既做法,同埋響 mac到做,所以揀 phantomjs(mac brew cask install 就可以)。Windows 都有。

我可以咁樣幾行就可以採集到




之後先 save 低,避免重複採集


下一步,就係拆返要既數據,用 jsoup就超容易做到,例如,用 .select 就可以定位到要既數據


今日成品就好似某樣,幾十行 code 就可以




做到 le 步數據採集基本完全。

寫好左之後可 build 個可執行 jar,咁就可以直接用,好方便⋯⋯

之後,我哋就可以用 machine learning tool,去分析,常見例如:分類及預測。因為我比較早期就用machine learning,所以揀java encog frameworks⋯⋯下期得閒再分享

[ 本帖最後由 林珍兒 於 2021-2-20 10:09 AM 編輯 ]



熱賣及精選
我取消我個offer

因睇同你這樣, 來來回回會用好多時間.
就算有結果, 之後仲要不斷更新......沒完沒了

謝謝



引用:
原帖由 michael2345 於 2021-2-20 10:57 AM 發表

我取消我個offer

因睇同你這樣, 來來回回會用好多時間.
就算有結果, 之後仲要不斷更新......沒完沒了

謝謝
冇事冇事,採集好簡單,你見上面幾行 code而已,唔會要你offer既,即管放心⋯⋯經驗分享一下而已⋯⋯仲有你嗰個 post既回覆,比我唔少 idea,非常感激。🙇‍♀️

[ 本帖最後由 林珍兒 於 2021-2-20 11:03 AM 編輯 ]



引用:
原帖由 林珍兒 於 2021-2-20 11:00 AM 發表


冇事冇事,採集好簡單,你見上面幾行 code而已,唔會要你offer既,即管放心⋯⋯經驗分享一下而已⋯⋯仲有你嗰個 post既回覆,比我唔少 idea,非常感激。🙇‍♀️
又唔需要感激咁凝重.

你得閑, 可以幫我減少到時間, 係馬會到攞到data, 到時再多謝你

短訊我



[隱藏]
引用:
原帖由 michael2345 於 2021-2-20 11:31 AM 發表


又唔需要感激咁凝重.

你得閑, 可以幫我減少到時間, 係馬會到攞到data, 到時再多謝你

短訊我
上面 sample 就係😂尋晚已經整好⋯⋯新版普通 get 唔到⋯⋯要用上面講既先得⋯⋯

同埋你剛剛上面開左名,要改成x會,一般唔可以直接 show其他名的,如果方便,你可以編輯一下你上面回覆d字,如果唔係會被屏蔽⋯⋯

[ 本帖最後由 林珍兒 於 2021-2-20 11:37 AM 編輯 ]



回覆 引用 TOP

俾個like


回覆 引用 TOP

我覺得似搵方法截取(網頁)數據多啲喎...


不過依家好多網上面嘅數據都信唔過,唔係有錯誤就係有缺失,好多仲係經修飾非原始性...



回覆 引用 TOP

用瀏覽器打開網頁,理解背後基本運作,就可以分到係唔係截取。

網頁,即係 data,例如,一個網頁顯示今日天氣16度
data,就係16,之後,佢經過特定既寫法 HTML,例如 <html><body>16</body></html> ,當我哋打一個網址(就像這個資料門牌),服務器就將le 串野傳送比我哋。瀏覽器收到後,就會根據 html格式去拆返16,然後,顯示出黎。

所以,瀏覽器只是我哋用來顯嗰串野既工具,所以,有好多唔同牌子瀏覽器。有常見IE,Firefox,Chrome,Safari,當然仲有好多唔常見的,例如有 text 瀏覽器⋯⋯

上面採集,其實就行自己實現一個簡單既小瀏覽器。
咁樣,我就可以分清係咪截取。

數據截取其實都係一個常用的做法,舉例一間銀行新裝左一套客服系統,但發現語音可以用,但視頻就用唔到。咁樣,我哋就要做一些檢測,定位問題,如何定位呢?

網絡封包截取就係常見手法,網絡數據會拆成細既數據包,由電腦 program,去網絡卡,經ISP,走去唔同地方。有走出有走入。可以響例如防火牆或路由器打開數據截取,咁樣,我就可以睇到,例如視頻既數據包,原來去到某個路由器就停左,咁樣就可以定位到問題。



回覆 引用 TOP

基本工具: chromn 的inspection , 睇 send request header , 同要有mitm proxy 解包。有呢兩個幾乎99% 都拎到


回覆 引用 TOP

[隱藏]
除非資料出於原始記錄,否則由網頁既有數據以獲得嘅都只係二手而已...


引用:
原帖由 alee001 於 2021-2-21 12:33 AM 發表

除非資料出於原始記錄,否則由網頁既有數據以獲得嘅都只係二手而已...
基本等同偷野。所以而家d網都註明版權所有,同數據擁有權。等d人偷左都唔可公開用。



回覆 引用 TOP

數據都有分好多唔同種類,採集只是一種途徑或工具,要視乎使用者在收集過程及過後對數據使用來判斷好壞,咁樣就會有好多唔同 scenario出現。如果用 偷 這個普遍認為負面既詞來形容,並不完全合適,只能夠 cover 到某一面。

舉例:rm command 可以刪除 file,rm -Rf / 用 root行,可以對系統做成具破壞性影響。但我哋唔會因為結果有不好既 scenaio,就形容rm工具有毒。

講返數據種類,普通人一般都會傾向以為係公司資料,產品資料,其實世界好大,仲有好多的,如果做開 machine learning,其實就知道,le 幾年出左好多所謂 public data或 open data,而且多數由官方提供,尤其係發展比較領先既地方,例如:平均食水用量,用電量,N種商業經濟狀況數據,成千上萬⋯⋯好多都值得拎黎分析⋯⋯

所以,工具同數據本身冇特別分好壞。

咁多open數據,當中其實縕涵好多商機。😏



回覆 引用 TOP

jennie


可否比個template 我今日試下?



引用:
原帖由 michael2345 於 2021-2-21 09:34 AM 發表

jennie


可否比個template 我今日試下?
我上面 sample係 java搭 phantomjs,你要裝返先 compile 到⋯⋯
1: 裝 eclipse 加 phantomjs......
2: eclipse new 一個 maven project
3: maven pom.xml 加 selenium,jsoup,phantomjs,apache common io
4: 加埋我上面 sample
如果d steps唔覺複雜,都係要,可以pm個mail,我send比你試試上面⋯⋯sample java 同 pom.xml



[隱藏]
引用:
原帖由 林珍兒 於 2021-2-21 09:55 AM 發表


我上面 sample係 java搭 phantomjs,你要裝返先 compile 到⋯⋯
1: 裝 eclipse 加 phantomjs......
2: eclipse new 一個 maven project
3: maven pom.xml 加 selenium,jsoup,phantomjs,apache common io
4: 加埋我上面 sample
如果d steps唔覺複雜 ...


得閑先



提示:支持鍵盤翻頁左 右
[按此隱藏 Google 建議的相符內容]