Re: [討論] 資料擷取程式發想

作者: StupidGaGa (笨嘎嘎)   2014-05-13 16:40:34
※ 引述《d25702 (DOTA)》之銘言:
: 我想要做一隻可以從網路擷取資料並分析利用的程式,
: 我的初步想法如該圖 http://ppt.cc/a3Ve
: 1.擷取網頁碼我算用httpwebrequest(httpWebresponse)或WebBroswer技術
: 2.分析資料用regularExpression
: 3.介面顯示用datagridview
: 4.資料EXCEL匯出則用NPOI
: 但目前我苦無想法與來源來為這隻程式注入生命,
: 大家有什麼idea嗎?
: 註:個人使用語言是VB.NET
剛好我也開發過類似的專案,
回答你一些我用到的東西。以C#來開發。
抓網頁的方法有三個
01. httpwebrequest
02. webclient
03. webbrowser
由難到簡單是01>02>03,
不過,我比較建議的是用httpwebrequest,
如果想偷懶點或者簡單的程式用webclient,
最後,webbrowser不要用,會有memory leak的問題,程式開太久會記憶體會爆掉。
通常爬蟲會搭配多執行緒,
如果簡單程式或你懶的話,用BackGroundWorker,
但是我比較建議自己寫多執行緒,
同時爬2X個網站你拉BackGroundWorker會死人,
畢竟,工具是好用,但無法搭配編寫者的需求。
分析或拆網頁的話,也有幾個方法,
01. Json、Xxml
02. Html Agility Pack
03. string
01的話,直接反序列化就好,最快,
02的話,稍微學一下,蠻簡單的。
03的話,通常會用string.IndexOf或string.Split
02或03的話,其實各有優缺點,
有時候網頁版面大改的話,02、03其實都要修改,
不過有時候小改的話,03其實比較有相容性。
不過這三個方法都一定要會的。
顯示畫面的話,隨意你想怎麼做,
因為這要講下去會講到軟體設計模式,
有興趣的話可以自己研究。
轉存Excel檔這部分的話其實沒什麼太大問題,
不過我建議存檔方式建議要抽像,
到時候要改成MySQL、Access、txt、Json、xml…會比較有彈性。
寫這種爬蟲軟體有個地方要注意,就是「你是否會比較分析多個網站」?
有跟沒有寫起來的東西差蠻多的,
尤其如果牽扯到多執行緒的話要多思考一下喔。
作者: pkmu8426 (巴426)   2014-05-14 18:16:00
請問 httprequest類 應該要熟悉該網站的標頭 甚至封包導向的驗證機制對吧? 有些網站標頭和一來一往封包做了些驗證 所以還要特地去分析網站這部分的運作才能正式進入擷取網頁文本的階段。y另外 類似誠品有擋webbrowser的機制 是從cookie 或是封包驗證的機制? 一般瀏覽器瀏覽沒問題 webbrowser會被擋謝謝。關於string分析網頁 string.Contains replace 也滿好用
作者: a926 (Aaron)   2014-05-15 10:23:00
我之前抓一個遊戲網站的查價.是先用Fiddler去試他要帶的參數因為他用.Net寫的,後來發現他需要某些.Net必備的值最後我才用WebRequest成功抓到資料@@
作者: pkmu8426 (巴426)   2014-05-15 18:07:00
謝謝

Links booklink

Contact Us: admin [ a t ] ucptt.com