2016-03-20 13 views
2

this page makalelerini kazıyorum. Ancak, sayfayı aşağı kaydırdığımda Ajax aracılığıyla yükler. Şimdiye kadar bu başarıya ulaşmadan POST isteğini simüle etmeye çalışıyorum. İşte sorunumu açıklayan kod pasajı.Web sayfasının lazili Scrub ile yüklenmesi ile ilgili sorunlar

import scrapy 
class eroskiSpider(scrapy.Spider): 
    name = "eroski" 
    allowed_domains = ['https://www.compraonline.com'] 
    start_urls = [ 
     'https://www.compraonline.grupoeroski.com/es/' 
    ] 
    counter = 0 
    def parse(self, response): 

     for sel in response.xpath('//nav[@class="navmenu"]/ul/li/div/ul/li'): 

      cat_title = sel.xpath('a/@title')[0].extract() 
      href = sel.xpath('a/@href')[0].extract() 
      url = response.urljoin(href) 

      print 'Parsing category ' + cat_title 
      yield scrapy.Request(url, callback = self.parse_cat, dont_filter = True) 
      break 

    def parse_cat(self, response): 

     category = response.xpath('//head/title/text()').extract_first() 
     counter = 0 
     for sel in response.xpath('//article'): 

      counter = counter + 1 
      print 'counter is ' + str(counter) 

      description = sel.xpath('.//h2[contains(@class, "description_title")]/a/@title').extract_first() 
      print description 

     payload = {'pageNumber': '2', 't:zoneid': 'zoneScroll'} 
     yield scrapy.FormRequest(url = response.url, formdata = payload, dont_filter=True) 

bunu sayfa ilk yüklendiğinde görünen aynı 20 öğeleri için sonsuza döngüler nasıl Gördüğünüz kodu çalıştırırsanız. Bu nedenle, FormRequest ile daha fazla makale yüklememe niyetim yanlıştır. Neyin yanlış olduğu hakkında bir fikrin var mı?

+0

Hangi terapi sürümünü kullanıyorsunuz? – gerosalesc

cevap

0

Üzgünüz. Aptalca soru. Açıkçası geri çekmeyi kullanmayı unuttum.

yield scrapy.FormRequest(url = response.url, formdata = payload, dont_filter=True, callback = self.parse_cat) 

Şimdi ilk sayfa numarasından sonra ikinci sayfa numarasını alıyoruz. Aaaaa çok aptalım.

+0

Çözümü paylaştığınız için teşekkürler, bu zekanın ilk önemli işareti;) – gerosalesc