2016-03-08 64 views
2

我正在Python中運行Scrapy蜘蛛來從網站上抓取圖像。嘗試其他方法後,我試圖實現一個ImagesPipeline來做到這一點。Scrapy ImagesPipeline沒有下載圖像

items.py

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

settings.py:

ITEM_PIPELINES = {'scrapy.pipelines.images.ImagesPipeline': 1} 
IMAGES_STORE = 'C:\Users\me\Desktop' 

myspider.py

def parse_photo_page(self, response): 
    item = NHTSAItem() 
    for sel in response.xpath('//table[@id="tblData"]/tr'): 
     url = sel.xpath('td/font/a/@href').extract() 
     table_fields = sel.xpath('td/font/text()').extract() 
     if url: 
      base_url_photo = "http://www-nrd.nhtsa.dot.gov" 
      full_url = base_url_photo + url[0] 
      if not item: 
       item['image_urls'] = [full_url] 
      else: 
       item['image_urls'].append(full_url) 
    return item 

有沒有錯誤這些圖片就不會被下載。調試器甚至說「抄襲」這裏的日誌:

DEBUG: Scraped from <200 http://www-nrd.nhtsa.dot.gov/database/VSR/veh/../SearchMedia.aspx?database=v&tstno=4000&mediatype=p&p_tstno=4000> 
{'image_urls': [u'http://www-nrd.nhtsa.dot.gov/database/MEDIA/GetMedia.aspx?tstno=4000&index=1&database=V&type=P', 
      u'http://www-nrd.nhtsa.dot.gov/database/MEDIA/GetMedia.aspx?tstno=4000&index=2&database=V&type=P', 
      u'http://www-nrd.nhtsa.dot.gov/database/MEDIA/GetMedia.aspx?tstno=4000&index=3&database=V&type=P', 
      u'http://www-nrd.nhtsa.dot.gov/database/MEDIA/GetMedia.aspx?tstno=4000&index=4&database=V&type=P', 
      u'http://www-nrd.nhtsa.dot.gov/database/MEDIA/GetMedia.aspx?tstno=4000&index=5&database=V&type=P']} 

我不關心延長管線(使自定義管道),默認imagespipeline是罰款。圖像無處可尋。任何想法我做錯了什麼?

+0

不知道是什麼問題。它可能是關於Windows上的'IMAGES_STORE'嗎?下面是Ubuntu上的一個工作示例:https://gist.github.com/redapple/396faaaaf8fcc0f77c10 –

+0

'allowed_domains'中有什麼? – Steve

+0

這些都是asp.net的參考,我不認爲scrapy會觸摸它們。嘗試一起使用硒廣告scrapy。 – Steve

回答

0

這裏的解決方案,它來找我從這個並行的問題:Scrapy: Error 10054 after retrying image download(感謝@neverlastn)

我只是簡單地添加這個片段到我的實際spider.py文件。

custom_settings = { "ITEM_PIPELINES": {'scrapy.pipelines.images.ImagesPipeline': 1}, "IMAGES_STORE": saveLocation }

我認爲這是不正確引用我的settings.py文件,因此並沒有激活圖像流水線。我不知道如何讓它準確地引用我的設置文件,但這個解決方案對我來說已經足夠了!

0

嘗試在settings.py

IMAGES_STORE = 'C:\Users\me\Desktop' 

與替換:

IMAGES_STORE = import os 
IMAGES_STORE = os.getcwd() 

如果它的工作原理,它是使用絕對路徑的格式問題。接着是被那些應該工作:

IMAGES_STORE = 'C:\\Users\\me\\Desktop' 

IMAGES_STORE = 'C:/Users/me/Desktop' 

附:這是settings.py。來自其他問題/答案的相對XPath問題也適用於此處。

+0

我試過了,但沒有奏效。我將接受從其他答案中提取的其他解決方案。 –