this sayfasından bazı bilgileri ayrıştırmaya çalışıyorum ve sayfayı "Packungsgröße" adındaki açılır menüden diğer seçeneklerle yeniden yükleyin. 3 seçenek var, bu yüzden tüm seçenekler için aynı sayfayı taramaya çalışıyorum.Form göndermek için Scrapy FormRequest.from_response() yöntemi nasıl kullanılır?
class="upprice_config"
ve POST
şeklini doğru verilerle kullanabileceğimi öğrendim. Tam olarak hangi veriyi temin etmem gerektiğini bilmiyorum, bu yüzden elimden gelen her şeyi tedarik ediyorum. Sonra ayrıştırma için aynı işlevi çağırırım.
Herhangi bir şekilde, istediğim şekilde çalışmıyor. Bana herhangi bir hata vermez ve form gönderimini yürütür gibi görünüyor, ancak gerekli sayfayı almıyorum.
... 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)
birileri burada yanlış yapıyorum ne işaret edebilir:
İşte benim kodudur. Bunu yapmak için daha iyi bir yol varsa, lütfen benimle paylaşın.
İyi poi gibi 'GET' hakkında nt. Teşekkür ederim. Sanırım, isteği biraz farklı göndermem gerek. Chrome'da bu "POST" argümanlarını bulabilir miyim? – Olexandr
neden, sadece google sorgusu ağda ağ istekleri görmek nasıl ve bir cevap bulacaksınız ... Eğer bu cevap sizin için yararlı ise sadece bir cevap olarak işaretlemek sadece –
Teşekkür ederim. Dava için başka bir seçenek olan birinin olup olmadığını görmek için biraz beklemek istiyorum. – Olexandr