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