1. 程式人生 > >新技能get

新技能get

俗話說“萬事開頭難”,前幾天用java模擬登陸人人、微博、QQ空間、Quora遇到了一些困難。
使用httpclient來進行模擬登陸並沒有讓人覺得輕鬆。
第一點是中文文件的匱乏,目前網上的資料有兩個版本,第一個是httpclient 3.x,另外一個是httpclient 4.x,而這兩個版本的差別還是蠻大的。兩種不同版本的資料相互雜交,讓人看了心煩。而英文文件就相對豐富一些了,不過面對相當的專業詞彙的時候,還有有些力不從心。(丟毛老師的臉了。)
第二點是引數的選擇,例如程式碼:

HttpPost httppost = new HttpPost("http://www.lashou.com/account/login/"
); List<NameValuePair> params = new ArrayList<NameValuePair>(); params.add(new BasicNameValuePair("user_id", "testuser007")); params.add(new BasicNameValuePair("pwd", "asdfg123")); params.add(new BasicNameValuePair("yan", yan)); params.add(new BasicNameValuePair("save_user"
, "on")); params.add(new BasicNameValuePair("save_pwd", "on")); params.add(new BasicNameValuePair("sub", "登入")); httppost.setEntity(new UrlEncodedFormEntity(params));
中 ,BasicNameValuePair的第一個引數的確定就是一件令人心煩的事。在post的方式中,需要知道那些引數被傳遞。而這個過程就會涉及到抓包的問題了。
網路上提供了很多抓包的工具和方法。由於個人習慣的原因,並不想額外的安裝抓包軟體進行分析,而是使用chrome的內建抓包工具進行分析。然而問題就處在這裡,真的很想吐槽資料的繁瑣。上百條資料,head、request、from data甚至cookie等,看得實在心累。於是不得不使用抓包工具,結果抓下來發現還沒完。。
以QQ空間、新浪微博舉例,在登入的過程中,各種資料是經過加密演算法加密後傳送的,因此對於傳送的資料,需要加密後傳送。最後弄得很煩躁。

於是上午的時候打算暫停一會兒,弄些別的玩玩。
晚上開始玩玩簡單資料分析——擬錄取研究生名單裡的隱含資訊。
首先是資料的收集,這個簡單,隨便百度一下就能搜尋到相關的Excel檔案。然而,如何把這麼多資料批量存入資料庫
中呢?
本人使用的是mysql資料庫,這裡記錄一下自己的方法:
1)首先開啟Excel檔案
這裡寫圖片描述
2)選擇另存為cvs檔案或者txt檔案。這裡選擇了txt檔案。注意,在存為txt檔案的時候,需要存為製表符分隔的形式。
這裡寫圖片描述
3)開啟另存好的檔案,再次另存為一下,這裡需要做的是編碼修改為utf-8(支援中文,防止亂碼),以和資料庫的編碼對應起來。
這裡寫圖片描述
4)mysql資料中建立相對應的資料表。
5)編寫語句:load data local infile ‘C:/Users/xxw/Desktop/list2.txt’ into table stuinfo fields terminated by ‘\t’;並執行。
6)執行結果,2333條資料輕鬆集體存入資料庫。
這裡寫圖片描述
這裡寫圖片描述
總結:過程很簡單,但在操作的時候還是遇到一些形形色色的小問題。光看沒有用,動手才是王道。
接下來,會匯入全國院校程式碼表。之後再做一些其他的統計分析,以作消遣娛樂之用。