2016-11-17 5 views
0

Ich benutze Scrapy und Selen zum Crawlen! meine Seite benutzt Ajax für Paginierung! actully, url keine Änderung und so response.body auch keine Veränderung! Ich möchte mit selen (für Paginierung) klicken und self.driver.page_source abrufen und stattdessen response.body verwenden! So writed ich diesen Code:Update Antwort.Body in Scrapy (ohne Nachladen)

res = scrapy.http.TextResponse(url=self.driver.current_url, body=self.driver.page_source, 
              encoding='utf-8') 
      print(str(res)) //nothing to print! 

      for quote in res.css("#ctl00_ContentPlaceHolder1_Grd_Dr_DXMainTable > tr.dxgvDataRow_Office2003Blue"): 
       i = i+1 
       item = dict() 


       item['id'] = int(quote.css("td.dxgv:nth-child(1)::text").extract_first()) 

Und keinen Fehler!

Antwort

2

Sie können mit response.replace() Methode Körper von Original-Antwort in scrapy ersetzen:

def parse(self, response): 
    response = response.replace(body=driver.page_source) 
+0

Ich benutze es aber nicht funktioniert! alles keine Veränderung vom letzten! – Mohsen

+0

@ user6935676 es funktioniert, haben Sie berücksichtigt, dass sowohl response.body und Ihr neuer Körper von driver.page_source identisch sind? – Granitosaurus

+0

sehr tnx! und plz, wenn du meine andere [Frage] beantworten kannst (http://stackoverflow.com/questions/40683617/webdriverwait-not-working-with-scrapy) :) – Mohsen