最近遇到的一個需求是如何讓程序自動登錄淘寶, 獲取用戶名稱等信息. 其實這個利用SS (SpiderStudio的簡稱) 實現起來非常簡單. 十數行代碼就可以做到非常完善:
1. 運行SS (下載地址), 編寫腳本打開淘寶登陸頁面:
Default.Navigate("https://login.taobao.com/member/login.jhtml");
Default.Ready();
2. 找到用戶名, 密碼的輸入框, 輸入信息, 點擊登錄按鈕:
var user = Default.SelectSingleNode("#TPL_username_1"); user.Focus(); //模擬點擊用戶名文本框 user.Attr("value", "noxxxxxxx"); //輸入用戶名 Default.Wait(1); //等待一秒 Default.SelectSingleNode("#TPL_password_1").Attr("value", "*******"); //找到密碼框並輸入密碼 Default.Wait(1); //等待一秒 var btnLogin = Default.SelectSingleNode("#J_SubmitStatic"); btnLogin.Click(); //點擊登錄按鈕
請注意代碼中有兩處出現Default.Wait(1). 這是為了控制節奏. 淘寶對機器人防范嚴格, 如果我們 輸入過快, 淘寶就會追加要求輸入驗證碼. 如果我們控制一下節奏, 淘寶會認為這就是一個正常的登錄 , 於是不要驗證碼也是能夠實現登錄的!
3. 等待登錄完成, 頁面跳轉:
Default.Reset();
Default.Ready();
4. 獲取用戶姓名的節點, 並顯示出來:
var name = Default.SelectSingleNode("div.name>a");
MessageBox.Show(name.Text());
5. 完整的腳本代碼:
public void Run() { Default.Navigate("https://login.taobao.com/member/login.jhtml"); Default.Ready(); var user = Default.SelectSingleNode("#TPL_username_1"); user.Focus(); user.Attr("value", "nxxxxxxx"); Default.Wait(1); Default.SelectSingleNode("#TPL_password_1").Attr("value", "********"); Default.Wait(1); var btnLogin = Default.SelectSingleNode("#J_SubmitStatic"); btnLogin.Click(); Default.Reset(); Default.Ready(); var name = Default.SelectSingleNode("div.name>a"); MessageBox.Show(name.Text()); }
6. 運行效果:
查看本欄目