2016-09-29 21 views
4

Ich versuche Bilder aller Produkte von here herunterzuladen. Meine Spinne sieht so aus:Spider muss Request, BaseItem, dict oder None zurücksenden, 'set'

from shopclues.items import ImgData 
import scrapy 
    class multipleImages(scrapy.Spider): 
     name='multipleImages' 
     start_urls=['http://www.shopclues.com/electronic-accessories-8/cameras-18/cameras-special.html?search=1&q1=camera',] 

     def parse (self, response): 
      for url in response.css('div.products-grid div.grid-product): 
       yield { 
       ImgData(image_urls=[url.css('img::attr(src)').extract()]) 
       } 

und items.py:

import scrapy 
from scrapy.item import Item 
class ShopcluesItem(scrapy.Item): 
    # define the fields for your item here like: 
    # name = scrapy.Field() 
    pass 

class ImgData(Item): 
    image_urls=scrapy.Field() 
    images=scrapy.Field() 

Aber ich Fehler erhalten im Anschluss an läuft die Spinne:

2016-09-29 11:56:19 [scrapy] DEBUG: Crawled (200) <GET http://www.shopclues.com/robots.txt> (referer: None) 
2016-09-29 11:56:20 [scrapy] DEBUG: Crawled (200) <GET http://www.shopclues.com/electronic-accessories-8/cameras-18/cameras-special.html?search=1&q1=camera> (referer: None) 
2016-09-29 11:56:20 [scrapy] ERROR: Spider must return Request, BaseItem, dict or None, got 'set' in <GET http://www.shopclues.com/electronic-accessories-8/cameras-18/cameras-special.html?search=1&q1=camera> 
2016-09-29 11:56:20 [scrapy] ERROR: Spider must return Request, BaseItem, dict or None, got 'set' in <GET http://www.shopclues.com/electronic-accessories-8/cameras-18/cameras-special.html?search=1&q1=camera> 
2016-09-29 11:56:20 [scrapy] ERROR: Spider must return Request, BaseItem, dict or None, got 'set' in <GET http://www.shopclues.com/electronic-accessories-8/cameras-18/cameras-special.html?search=1&q1=camera> 
2016-09-29 11:56:20 [scrapy] ERROR: Spider must return Request, BaseItem, dict or None, got 'set' in <GET http://www.shopclues.com/electronic-accessories-8/cameras-18/cameras-special.html?search=1&q1=camera> 
2016-09-29 11:56:20 [scrapy] ERROR: Spider must return Request, BaseItem, dict or None, got 'set' in <GET http://www.shopclues.com/electronic-accessories-8/cameras-18/cameras-special.html?search=1&q1=camera> 

Was bedeutet dieser Fehler bedeutet? Was könnten die möglichen Gründe für den Fehler sein?

Antwort

4

Eine Liste von URLs an die Pipeline übergeben.

def parse (self, response): 
    images = ImgData() 
    images['image_urls']=[] 
    for url in response.css('div.products-grid div.grid-product): 
     images['image_urls'].append(url.css('img::attr(src)').extract_first()) 
    yield images 
3

{} ist eine Notation, um eine Menge in Python oder einem Wörterbuch zu definieren. Hängt von den Werten ab, die Sie innerhalb der geschweiften Klammern angeben. Wenn es eine Liste ist {a, b, c, d} < - das ist ein Satz, wenn es Schlüssel ist, um {a: b, c: d} < zu bewerten - das ist ein Diktat.

ergeben Sie einen Satz in dieser Zeile:

yield { 
    ImgData(image_urls=[url.css('img::attr(src)').extract()]) 
} 

Ich nehme an, Sie ein Wörterbuch erhalten möchten?

yield { 
    'images': ImgData(image_urls=[url.css('img::attr(src)').extract()]), 
} 
+0

Ich möchte eigentlich alle Bilder herunterladen, die unter angegebenen Pfad verfügbar sind. Ich habe dies für ein einzelnes Bild mit 'yieldImgData (image_urls = [url.css (' img :: attr (src) '). Extract_first()]) 'Aber die Verwendung derselben für mehrere Bilder gibt Fehler wie' Error processing {'image_urls': [[u'http: // cdn.shopclues.com/Bilder/thumbnails/25469/200/200/canoneos750dkitefs1855mmisstmdslr400x400imae77typaskv7f14343509861444028422.jpg''. –

Verwandte Themen