私は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)
は、誰かが私がここで間違ってやっているものに私を指すことができます:
は、ここに私のコードです。それを行うより良い方法がある場合は、私と共有してください。
グッドポイのような要求があまりにも
何かを得ることができます'GET'についてはnt。ありがとうございました。私は少し違ってリクエストを投稿する必要があると思います。 Chromeでこれらの 'POST'引数を見つけることはできますか? – Olexandr
なぜ、ちょうどgoogleの問い合わせをどのようにchormeのネットワーク要求を見るためにあなたは答えを見つけるでしょう...この答えが有用であるならば、ちょうど答えとしてそれをマークしてください –
ありがとう。私は、私の場合に別の選択肢を持つ誰かがいるかどうかを少し見たいと思っています。 – Olexandr