Bilder mit kratzigen Bildern herunterladen

Ich fange mit Schrott an, und ich habe erstes Problem. Es lädt Bilder herunter. Also das ist meine Spinne.

from scrapy.contrib.spiders import CrawlSpider, Rule from scrapy.selector import HtmlXPathSelector from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor from example.items import ProductItem from scrapy.utils.response import get_base_url import re class ProductSpider(CrawlSpider): name = "product" allowed_domains = ["domain.com"] start_urls = [ "http://www.domain.com/category/supplies/accessories.do" ] def parse(self, response): hxs = HtmlXPathSelector(response) items = [] sites = hxs.select('//td[@class="thumbtext"]') number = 0 for site in sites: item = ProductItem() xpath = '//div[@class="thumb"]/img/@src' item['image_urls'] = site.select(xpath).extract()[number] item['image_urls'] = 'http://www.domain.com' + item['image_urls'] items.append(item) number = number + 1 return items 

Wenn ich ITEM_PIPELINES und IMAGES_STORE in settings.py zitiere, ITEM_PIPELINES ich die richtige URL für das Bild, das ich herunterladen möchte (Kopie in den Browser kopieren).

  • Wie man ein Objekt für ein Django-Modell mit einem vielen zu vielen Feld zu erstellen?
  • Keine Umrisse auf Bins von Matplotlib Histogrammen oder Seaborn distplots
  • Erstellen von Tabellen in Matplotlib
  • Lesen Sie die Celery-Konfiguration aus der Python-Eigenschaftsdatei
  • PyQT auf klicken neues Fenster öffnen
  • Pip installieren: Bitte überprüfen Sie die Berechtigungen und Besitzer dieses Verzeichnisses
  • Aber wenn ich das beziehe, bekomme ich folgende Fehler:

     raise ValueError('Missing scheme in request url: %s' % self._url') exceptions.ValueError: Missing scheme in request url:h 

    Und ich kann meine Bilder nicht herunterladen.

    Ich habe den ganzen Tag gesucht und fand nichts hilfreiches.

  • HTML nicht korrekt mit Canopy 1.7.1.3323 / IPython 4.1.2
  • Dekorateur Python-Bibliothek verstecken die Kwargs in Args
  • Fehlermeldung: "'chromedriver' ausführbare Datei muss im Pfad verfügbar sein"
  • Ersetzen Sie das Zeichen in der Datei
  • Unfähig, gebrochene Kugelbewegung in pygame Pong zu reparieren
  • Trunkieren Sie einen Dezimalwert in Python
  • 2 Solutions collect form web for “Bilder mit kratzigen Bildern herunterladen”

    Ich denke, die Bild-URL, die Sie gekratzt haben, ist relativ. Um die absolute URL zu erstellen, verwenden Sie urlparse.urljoin :

     def parse(self, response): ... image_relative_url = hxs.select("...").extract()[0] import urlparse image_absolute_url = urlparse.urljoin(response.url, image_relative_url.strip()) item['image_urls'] = [image_absolute_url] ... 

    Habe keine ITEM_PIPELINES benutzt, aber die Docs sagen:

    In einer Spinne kratze du ein Item und legst die URLs seiner Bilder in ein image_urls Feld.

    Also, Item ['image_urls' sollte eine Liste von Bild-URLs sein. Aber Ihr Code hat:

     item['image_urls'] = 'http://www.domain.com' + item['image_urls'] 

    Also, ich denke, es iteriert Ihre einzelne URL char von char – mit jedem als URL.

    Ich denke, dass Sie möglicherweise Ihre Image-URL in einer Liste zum Item:

     item['image_urls'] = [ 'http://www.domain.com' + item['image_urls'] ] 
    Python ist die beste Programmiersprache der Welt.