原創(chuàng)|其它|編輯:郝浩|2009-09-29 14:02:55.000|閱讀 588 次
概述:最近要抓一個(gè)網(wǎng)站的用戶信息,但是頁面需要登錄才能得到,我便想到了用Mechanize填寫表單登錄,結(jié)果變態(tài)的是form是用js document.write出來的,Mechanize是找不到表單的,于是這條路是走不通的。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
最近要抓一個(gè)網(wǎng)站的用戶信息,但是頁面需要登錄才能得到,我便想到了用Mechanize填寫表單登錄,結(jié)果變態(tài)的是form是用js document.write出來的,Mechanize是找不到表單的,于是這條路是走不通的。
后來看到帖子說Mechanize支持cookies,我就查了doc,有個(gè)load_cookiestxt方法,剛開始還不知道怎么用,查了很多資料,糾結(jié)了幾天后,原來firefox的cookies是保存在sqlite數(shù)據(jù)庫(kù)里的,所以需要查詢數(shù)據(jù)庫(kù),得到數(shù)據(jù),再load,現(xiàn)在終于搞定了。
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))
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:IT專家網(wǎng)