2011-05-05 38 views
2

我有一個腳本,每週將郵件發送給我的發票,挖出信息並將其發佈到xpenser.com,這些腳本會在每週進入Fedex帳單。近期聯邦快遞結算網站進行重新設計後,當我運行這段代碼:Ruby Mechanize 405 Net :: HTTPMethodNotAllowed Error Scraping Fedex Billing

agent = Mechanize.new 
    page = agent.get 'http://fedex.com/us/fcl/pckgenvlp/online-billing/' 
    form = page.form_with(:name => 'logonForm') 
    form.username = FEDEX['username'] 
    form.password = FEDEX['password'] 
    page = agent.submit form 
    pp page 

我收到此錯誤:

Mechanize::ResponseCodeError: 405 => Net::HTTPMethodNotAllowed 

我看到有一個JavaScript的身份驗證功能,似乎構建設置隱藏網址變量。我試圖在沒有成功的情況下傳遞可變字符串的各種組合。

雖然Mechanize不支持JavaScript,但它會傳入變量字符串,如果您點擊了正確的字符串,則可以通過該方式進行身份驗證。我希望在這裏做到這一點。

+0

我建議你使用firebug firefox插件來追蹤實際查詢(並找到所有必需的參數集),然後改進你的ruby代碼。 – taro 2011-05-10 18:45:53

+0

你需要手動設置form.action,還有那些參數:appName,step3URL,afterwardsURL,returnurl。有關詳細信息,請參閱函數CallLogin()。 – taro 2011-05-10 19:11:33

回答

0

使用機械化-1.0.0以下工作:

agent = Mechanize.new 
    page = agent.get 'http://fedex.com/us/fcl/pckgenvlp/online-billing/' 
    form = page.form_with(:name => 'logonForm') 
    form.username = FEDEX['username'] 
    form.password = FEDEX['password'] 
    form.add_field!('field_name', 'Page$2') 
    page = agent.submit form 
    pp page 

嘗試。它可能會幫助你

+0

不幸的是,這不適合我。代碼:http://grab.by/a8cZ錯誤:http://grab.by/a8d1 – johnnygoodman 2011-05-15 03:12:32

+0

你用你的隱藏字段替換field_name並檢查你的機械化版本? – Hitesh 2011-05-16 05:03:36