2016-04-08 18 views
0

私はthisページからいくつかの情報を解析し、 "Packungsgröße"というドロップダウンメニューから他のオプションでページをリロードしようとしています。 3つのオプションがあるので、すべてのオプションについて同じページを削り取ろうとしています。Scrapy FormRequest.from_response()メソッドを使用してフォームを送信する方法

class="upprice_config"POSTの形式を正しいデータで使用できることがわかりました。私はどのデータを供給する必要があるのか​​正確には分からないので、私が持っているものすべてを供給します。それから私は解析のために同じ関数を呼び出します。

いずれにしても、私の望むように動作しません。それは私に何かエラーを与えないし、それはフォームの提出を実行するようだが、私は必要なページを取得していない。

... def parse_product(self, response): 
120  sc_menu = response.xpath('//form[@class="upprice_config"]/div/select') 
121   if sc_menu: 
122    sel_name = sc_menu[0].xpath('@name').extract()[0] 
124    for opt in sc_menu[0].xpath('option'): 
126     if opt.xpath('@selected'): 
127      selected = opt.xpath('text()').extract()[0] 
129      product['options'] = selected.strip() 
130 
131      yield product 
132 
133     # extract value 
134     value = opt.xpath('@value').extract()[0] 
136     # submit form for the new option 
137     self.submit_form(response, value, sel_name) 
138   else: 
139    product['options'] = '' 
140 
141    yield product 
142 
143 
144 # submit form for the new option 
145 def submit_form(self, response, value, sel_name): 
146  formdata = {'method': 'POST', 
147     'action': response.url, 
148     'value': value} 
149  scrapy.http.FormRequest.from_response(response, 
150     formdata = formdata, 
151     clickdata = {'name': sel_name}, 
152     callback = self.parse_product) 

は、誰かが私がここで間違ってやっているものに私を指すことができます:

は、ここに私のコードです。それを行うより良い方法がある場合は、私と共有してください。

答えて

2

あなたはFirefoxが放火犯をインストールし、データのウェブサイトが掲載されたものをチェックしようと使用している場合

私は、彼らはどちらかあなたがそのデータを投稿することができますか、私はちょうどあなたをチェックするオプション値

select class="form-control" onchange="this.form.submit();" name="group[1]"> 
    <option value="3"> 3kg </option> 
    <option value="233" selected="selected"> 10kg </option> 
    <option value="3603"> 25kg </option> 

を投稿している見ることができます

http://www.zooroyal.de/muehldorfer-pferdeleckerli-bio-bronchial?c=6259&group[1]=233 
http://www.zooroyal.de/muehldorfer-pferdeleckerli-bio-bronchial?c=6259&group[1]=3603 
+0

グッドポイのような要求があまりにも

何かを得ることができます'GET'についてはnt。ありがとうございました。私は少し違ってリクエストを投稿する必要があると思います。 Chromeでこれらの 'POST'引数を見つけることはできますか? – Olexandr

+0

なぜ、ちょうどgoogleの問い合わせをどのようにchormeのネットワーク要求を見るためにあなたは答えを見つけるでしょう...この答えが有用であるならば、ちょうど答えとしてそれをマークしてください –

+0

ありがとう。私は、私の場合に別の選択肢を持つ誰かがいるかどうかを少し見たいと思っています。 – Olexandr

関連する問題