2016-04-06 17 views
1

Scrapy çalışıyorum ve kesinlikle seviyorum. Ancak, test ettiğim şeylerden biri işe yaramıyor.Scrapy: '// select/option' xpath herhangi bir sonuç vermez

Chrome konsolunu kullanırken

, web sitesi aşağıda geliyor basit xpath

//select/option 
kullanılarak, (örneğin, apple.com) bir sayfa kazımak için çalışıyor ve mevcut klavye seçeneklerinin bir listesini kaydetmek ediyorum scherapy.response.xpath ('// select/option') sıyırıcıyla veya konsol aracılığıyla kullanırsam, kolayca yineleyebileceğim seçimlerden oluşan bir dizi geri döndüğümde, bundan geri bir şey alamıyorum.

site ile birlikte, ben her seçenek için kod ve metin almaya çalışıyorum görebileceğiniz gibi kazıyıcı Benim kod aşağıda biraz benzemekle

import scrapy 
from scrapy.linkextractors import LinkExtractor 
from lxml import html 
from apple.items import AppleItem 


class ApplekbSpider(scrapy.Spider): 

    name = 'applekb' 
    allowed_domains = ['apple.com'] 
    start_urls = ('http://www.apple.com/ae/shop/buy-mac/imac?product=MK482&step=config#',) 

    def parse(self, response): 
     for sel in response.xpath('//select/option'): 
      item = AppleItem() 
      item['country'] = sel.xpath('//span[@class="as-globalfooter-locale-name"]/text()').extract() 
      item['kb'] = sel.xpath('text()').extract() 
      item['code'] = sel.xpath('@value').extract() 
      yield item 

(basitlik için düzenlenmiş) " Yerel Adı "(ülke).

Bir yan not olarak, CSS seçicilerinden boşuna yararlanmaya çalıştım. Ne eksik olduğumu bilen var mı?

Şimdiden teşekkürler çok, A

cevap

0

Sorun, JavaScript'in web sayfası tarafından kullanılmasıdır. URL'yi Chrome'da açtığınızda, JavaScript kodu, klavye seçenekleri ile açılır menüyü oluşturan tarayıcı tarafından yürütülür.

JavaScript yürütme işlemini gerçekleştirecek bir üst-tarayıcıya (PhantomJS vb.) Bakmalısınız. Splash ile Scrapy, scrapyjs.SplashMiddleware Downloader Middleware ile kolayca entegre edilebilen kendi başına bir tarayıcı sunuyor.

https://github.com/scrapy-plugins/scrapy-splash

0

//select/option şey bulmak etmediğini nedeni, scrapy ile yüklediğinizde web sitesinde hiçbir select etiketi olmasıdır. Bunun nedeni JavaScript'in çalıştırılmaması ve açılan değerlerin değerlerle doldurulmamasıdır.

Chrome geliştirici araçlarınızın ayarlarından javascript'i devre dışı bırakmayı deneyin ve sayfayı boşalttığınızda aynı boş web sitesinin hangi scrapy'nin gördüğünü görmesini sağlayın.

+0

Aha! Scrapy'de tam olarak gördüğüm şey bu! İpucu için teşekkürler. Şimdi, doğru şeyleri almak için bir terapi yolu var mı? Yoksa Selenyum'a geçmeli miyim? – Antonio