Ich versuche einige Informationen von der Seite this zu parsen und lade dann die Seite mit anderen Optionen aus dem Drop-Down-Menü "Packungsgröße" neu. Es gibt 3 Möglichkeiten, also versuche ich die gleiche Seite für alle Optionen zu kratzen.Wie verwende ich die Scrapy FormRequest.from_response() Methode um ein Formular zu senden?
Ich fand heraus, dass ich die Form von class="upprice_config"
und POST
es mit den richtigen Daten verwenden kann. Ich weiß nicht genau, welche Daten ich liefern muss, also versorge ich alles, was ich habe. Dann rufe ich die gleiche Funktion zum Parsen auf.
Irgendwie funktioniert es nicht so, wie ich es möchte. Es gibt mir keinen Fehler und scheint, dass es die Formularübermittlung ausführt, aber ich bekomme die erforderliche Seite nicht.
Hier ist mein Code:
... 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)
jemand mir zeigen kann, was ich falsch hier tue. Wenn es einen besseren Weg gibt, teilen Sie das bitte mit mir.
Gut poi können über das 'GET'. Vielen Dank. Ich denke, ich muss die Anfrage etwas anders posten. Kann ich diese 'POST'-Argumente in Chrome finden? – Olexandr
warum nicht, machen Sie einfach eine Google-Abfrage, wie Sie Netzwerk-Anfragen in Chorme sehen und Sie werden eine Antwort finden ... Wenn diese Antwort hilfreich für Sie ist, markieren Sie es einfach als Antwort –
Vielen Dank. Ich möchte ein wenig warten, um zu sehen, ob es jemanden mit einer anderen Option für meinen Fall gibt. – Olexandr