最近的工作总结
最近再寫一個房產群發、采集的軟件。百度【房產群發】,類似軟件一大堆,就是仿著他們的做的。用的是winfrom(發現在哪工作都用...)、Sqlite。
涉及到的就是正則、多線程、反射。HttpWebRequest、HttpWebResponse、WebClient、Cookie、StreamReader這些類來回倒騰。
還有抓包工具HttpAnalyzerStdV7。
具體的結構就是簡單三層。
Winfrom做界面。
BLL業務邏輯,負責生成和調控采集發布任務。
DAL訪問SQLite保存數據。每個房產網站的對應一個項目,編譯之后每個網站都有各自的DLL。DLL實現了BLL中規定的接口,包括采集、發布、接受命令、返回狀態等等方法。
BLL通過反射機制來調用DLL具體的方法,好處就是DLL缺失,或者因為升級損壞什么的不影響其他網站的工作。
采集和發布,采集要簡單的多。訪問一個網址用WebClient下載HTML代碼,這里重寫了一下WebClient,只是簡單的加上了一個超時設置。注意好網站編碼就足夠了,剩下的就是寫正則,抓取內容。寫這個軟件的好處就是正則大大熟悉了,原來用正則就是網上抄一個,現在自己能寫寫了。
發布就要復雜的多,但是注意的點其實并不多,就是繁雜。
1.POST數據準備。每個網站驗證的東西并不同,有的網站加密必須要算出相應的Key一起提交。還有最多的是小區ID、城市ID、區ID,一般都是ajax獲取的,每個網站各有不同嘛。
2.提交方式,一是直接POST這種方式比較簡單。二就是生成一個流,模擬網站正常的提交的數據流。
3.cookie必須要準備好,模擬網站需要的。
基本上就這3點做好,這些網站的登錄、發布、圖片上傳都能搞定。當然也有例外,那就另說了...
?
在說說整個程序的運行。
第一步當然是登錄啦,輸入用戶名密碼之后,程序訪問網站驗證用戶名密碼是否正確。
成功之后是檢測升級,網站會返回最新的版本和數據庫版本,如果不同,再次訪問一個地址,會返回最新的下載地址和數據結構,我這里返回的都是JSON,容易讀取嘛。
然后程序就下載更新包或者升級數據庫。
程序正常打開之后,
首先是采集。用戶可以設置采集的網站、時間頻率、關鍵詞設定等等。程序接到設置之后,生成一個任務實體。然后傳遞給BLL,BLL根據這個任務實體中的網站設置調用相關的DLL,這里就開啟了多線程。網站DLL接到任務就開始采集啦。
之后是發布,前面是一樣的。網站DLL接收到發布任務之后,首先要登錄,保存cookie??赡苓€要訪問多個網址,保存響應的cookie,模擬正常操作的樣子。之后就根據需要發布的房源信息的種類,比如出租、出售、合租等等準備數據然后提交。
還有,最近在用APiCloud寫一個手機應用,感覺還是不錯的。
轉載于:https://www.cnblogs.com/yanshanshuo/p/4206381.html
總結
- 上一篇: Hibernate的四种典型例子(增删改
- 下一篇: PS制作高光导航背景