2016-04-30 12 views
1

私はウェブページのクロールに使用したコードです。私がスクレイプしたいサイトでは、レイジーローディングが有効になっているので、100個の画像のうち10個しか取得できず、残りはすべてplaceholder.jpgです。 Scrapyのレイジーローディングイメージを扱う最良の方法は何でしょうか?pythonを使用してレイジーローディング画像をスクラップする方法

ありがとうございます!

class MasseffectSpider(scrapy.Spider): 
name = "massEffect" 
allowed_domains = ["amazon.com"] 
start_urls = [ 
    'file://127.0.0.1/home/ec2-user/scrapy/amazon/amazon.html', 
] 


def parse(self, response): 

for item in items: 
    listing = Item() 
    listing['image'] = item.css('div.product img::attr(src)').extract() 
    listing['url'] = item.css('div.item-name a::attr(href)').extract() 
    listings.append(listing) 

CasperJSのようなツールでは、画像を読み込むためのビューポートがあります。

casper.start('http://m.facebook.com', function() { 

// The pretty HUGE viewport allows for roughly 1200 images. 
// If you need more you can either resize the viewport or scroll down the viewport to load more DOM (probably the best approach). 
this.viewport(2048,4096); 

this.fill('form#login_form', { 
    'email': login_username, 
    'pass': login_password 
}, true); 
}); 
+0

クロールしているサイトを共有できますか?ペーストビンの上で動作します。 – eLRuLL

答えて

1

問題は、治療ができないJavascriptで遅延ロードが行われていることです。これはcasperjsが処理する問題です。

はあなたが遅延読み込みで画像をこすりするにはセレンまたはscrapyjs

1

でそれをミックスする必要がscrapyでこの作業を行うには、画像を返すのAJAX要求を追跡する必要があります。この後、あなたはその要求を治療で打つ。特定のページからすべてのデータを取得した後。あなたは、抽出されたデータを治療要求のメタを介して他のコールバックに送る必要があります。詳細ヘルプScrapy request

関連する問題