原創|其它|編輯:郝浩|2009-09-29 14:02:55.000|閱讀 588 次
概述:最近要抓一個網站的用戶信息,但是頁面需要登錄才能得到,我便想到了用Mechanize填寫表單登錄,結果變態的是form是用js document.write出來的,Mechanize是找不到表單的,于是這條路是走不通的。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
最近要抓一個網站的用戶信息,但是頁面需要登錄才能得到,我便想到了用Mechanize填寫表單登錄,結果變態的是form是用js document.write出來的,Mechanize是找不到表單的,于是這條路是走不通的。
后來看到帖子說Mechanize支持cookies,我就查了doc,有個load_cookiestxt方法,剛開始還不知道怎么用,查了很多資料,糾結了幾天后,原來firefox的cookies是保存在sqlite數據庫里的,所以需要查詢數據庫,得到數據,再load,現在終于搞定了。
cookie_dir = "/home/samsam/.mozilla/firefox/q0ggld1w.default"
cookie = String.new
Dir.chdir(cookie_dir){|dir|
db = SQLite3::Database.new('cookies.sqlite')
p = Proc.new{|s| s.to_i.zero? ? 'TRUE' : 'FALSE'}
db.execute("SELECT host, isHttpOnly, path, isSecure, expiry, name, value FROM moz_cookies
ORDER BY id DESC"){|r|
cookie << [r[0], p.call(r[1]), r[2], p.call(r[3]), r[4], r[5], r[6]].join("\t") << "\n"
}
}
agent = WWW::Mechanize.new
agent.cookie_jar.load_cookiestxt(StringIO.new(cookie))
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:IT專家網