2016-04-02 70 views
2

我試圖通過Ruby或Python來進行POST請求下列網站的表格: http://diamond-cut.com.au/holloway_cut_adviser.htmPOST請求中的Ruby/Python中返回「無數據」

請求返回「無數據」。我想我從我的請求頭省略的東西

最少的代碼是用Ruby返回「無數據」(例如,用戶代理,接受包括這些參數沒有發生變化的結果。):

require 'restclient' 
url='http://www.pricescope.com/hca.php' 
params = {"depth_textbox" => '60', 
      "table_textbox" => '57', 
      "crown_listbox" => "0", 
      "crown_textbox" => '34', 
      "pavilion_listbox" => "0", 
      "pavilion_textbox" => '40.5', 
      "cutlet_textbox" => "0"} 

page=RestClient.post(url,params) 

在Python:

import requests 
url='http://www.pricescope.com/hca.php' 
params = {"depth_textbox" : '60', 
      "table_textbox" : '57', 
      "crown_listbox" : "0", 
      "crown_textbox" : '34', 
      "pavilion_listbox" : "0", 
      "pavilion_textbox" : '40.5', 
      "cutlet_textbox" : "0"} 
r=requests.post(url,params) 

回答

2

你需要用頭一點玩:

headers = {'Referer': 'http://www.pricescope.com/hca.php'} 

r = requests.post(url, data=params, headers=headers) 
print r.content 
+0

謝謝!有效。爲了完整起見,下面是Ruby中的等效修復:'page = RestClient.post(url,data = params,headers = {'Referer'=> url})是否有直觀的解釋爲什麼需要Referer頭?另外,調試將如何揭示這一點? –

+0

@GolanTrevize它是網站所有者的限制。 –

-1

在你的python代碼中,它應該如下所示。

R = requests.post(URL,數據=參數)

links還可以幫助您瞭解POST語法。