2012-12-21 10 views
5

scrapy nie pobiera poprawnie plików. Mam adresy URL moich produktów, więc pomyślałem, że mogę użyć wget do pobrania plików.W jaki sposób mogę używać wget do pobierania plików ze skruty?

Jak korzystać z wget wewnątrz funkcji scrapy process_item? Czy istnieje inny sposób pobierania plików?

class MyImagesPipeline(ImagesPipeline): 
    #Name download version 
    def image_key(self, url): 
     image_guid = url.split('/')[-1] 
     return 'full/%s' % (image_guid) 

    def get_media_requests(self, item, info): 
     if item['image_urls']: 
      for image_url in item['image_urls']: 
      # wget -nH image_ul -P images/ 
      yield Request(image_url) 
+0

Co próbujesz osiągnąć i dokładnie Czego spróbowałeś do tej pory? – Tadeck

+0

Pobierany jest obraz ze złomem, ale z powodu jakiegoś błędu w scrapowaniu, anegacje z GIF są pobierane jako niezagrożone. więc myślałem, że powinienem użyć wget do bezpośredniego nanoszenia obrazów zamiast zapisywania obrazów. opublikuję mój kod potoku – user19140477031

Odpowiedz

4

Ten kod wykona wget, można zastąpić swój komentarz z poniższych linii

import subprocess 

    ... 

subprocess.call(['wget','-nH', image_url, '-P images/']) 

można przeczytać o subprocess.call tutaj: http://docs.python.org/2/library/subprocess.html

+0

dziękuję kolego, spróbuję, że – user19140477031

+0

dostaję tę 'wget: nielegalna opcja - '-n' – user19140477031

+0

Edytowałem swoją odpowiedź: zapomniałem podzielić argumenty, teraz powinno być poprawne – furins

Powiązane problemy