2016-04-02 2 views
2

Ich versuche, eine POST-Anforderung für ein Formular auf der folgenden Website entweder über Rubin- oder Python zu machen: ‚Keine Daten‘ http://diamond-cut.com.au/holloway_cut_adviser.htmPOST Anfrage in Ruby/Python Rückkehr ‚Keine Daten‘

die Anfrage zurückkehrt Ich denke, dass ich etwas von meiner Anfrage-Header bin Weglassen

Minimal-Code, ‚Keine Daten‘ in Ruby zurückgibt (zB User-Agent, akzeptieren Einschließlich dieser Parameter hat das Ergebnis nicht verändert.):

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) 

In 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) 

Antwort

2

Sie müssen sich mit Header ein wenig spielen:

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

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

Danke! Es funktionierte. Der Vollständigkeit halber sei hier die äquivalente Korrektur in Ruby beschrieben: 'page = RestClient.post (URL, Daten = Parameter, Header = {'Referer' => URL})' Gibt es eine intuitive Erklärung dafür, warum der Referer-Header benötigt wurde? Wie würde Debugging dies auch zeigen? –

+0

@GolanTrevize es ist Einschränkungen von Seiteninhabern. –

-1

In Ihrem Python-Code sollte es wie folgt sein.

r = requests.post (url, data = params)

Diese links könnte Ihnen auch helfen, die POST-Syntax zu verstehen.