2012-05-06 14 views
12

मैं अब लगभग 1 सप्ताह के लिए स्केपर का उपयोग कर रहा हूं, और छवियों को अमेज़ॅन एस 3 पर स्टोर करना चाहता हूं, और उन्होंने उल्लेख किया कि वे अमेज़ॅन एस 3 पर अपलोड करने वाली छवियों का समर्थन करते हैं लेकिन यह दस्तावेज नहीं है। तो क्या किसी को पता है कि स्केच के साथ अमेज़ॅन एस 3 का उपयोग कैसे करें?अमेज़ॅन एस 3 पर स्केपर छवियों को कैसे स्टोर करें?

यहां media pipeline के लिए उनके स्केपर दस्तावेज़ हैं।

AWS_ACCESS_KEY_ID = "xxxxxx" 
AWS_SECRET_ACCESS_KEY = "xxxxxx" 
IMAGES_STORE = "s3://bucketname/base-key-dir-if-any/" 

सब है कि, अर्थात्:

+0

मुझे उस पृष्ठ पर इंगित करें जिसे वे S3 पर अपलोड करने का समर्थन कहते हैं। मुझे यह नहीं मिल रहा है। कोई बात नहीं, मैंने इसे अब देखा। S3 पर अपलोड करने के लिए पायथन-बोटो का उपयोग करें, यह पूरी तरह से प्रलेखित है। – rantanplan

+0

सहमत पाइथन-बोटो जाने का रास्ता है। –

+1

धन्यवाद दोस्तों, लेकिन मैं कारण पूछ रहा था यह पहले से ही स्केपर में लागू किया गया है। –

उत्तर

10

आप 3 सेटिंग्स की जरूरत है। छवियों एक ही निर्देशिका http://readthedocs.org/docs/scrapy/en/latest/topics/images.html#file-system-storage में वर्णित संरचित, यानी का उपयोग कर संग्रहीत किया जाएगा:

s3://bucketname/base-key-dir-if-any/full/3afec3b4765f8f0a07b78f98c07b83f013567a0a.jpg 
+0

मैंने अभी कोशिश की है, और यह त्रुटि मिली है "कोई मॉड्यूल boto.s3.connection नाम नहीं है" ..... बस easy_install boto की कोशिश की और यह ठीक काम करता है :) धन्यवाद –

+0

8/8 के रूप में/12 v .14.4 - एस 3 छवि स्टोर कार्यान्वयन के साथ कुछ समस्याएं हैं जो आपके क्रॉलर को^सी के लिए उत्तरदायी लटका सकती हैं, जिसके लिए हत्या -9 को समाप्त करना आवश्यक है। कोड के माध्यम से एक त्वरित रूप से मुझे संदेह है कि एस 3 छवि भंडारण कोड डिफ्रेंस कर रहा है जिस तरह से कोई समस्या है। – Ted

+0

@ डांगरा मैं इसे काम करने की कोशिश कर रहा हूं लेकिन नहीं कर सकता (छवियों को एस 3 पर अपलोड नहीं किया गया है)। मैं निर्धारित किया है: 'AWS_ACCESS_KEY_ID =" xxx " AWS_SECRET_ACCESS_KEY =" xxx " IMAGES_STORE =" http://s3-eu-west-1.amazonaws.com/[bucketname] "' Scrapy नहीं है प्रतीत होता है कि कोई त्रुटि है। मैंने बोटो भी इंस्टॉल किया है। मुझे क्या याद आ रही है? – 2083

4

पिछले जवाब के बाद से कुछ साल कर दिया गया है, और कुछ चीजें बदल गई (2015)। निक वेरविमेरेन ने एक ब्लॉग पोस्ट लिखा है कि यह कैसे किया जाए इसके एक अद्यतन संस्करण का विवरण दिया गया है। अपने ब्लॉग पोस्ट यहाँ है: https://www.nickv.codes/blog/scrapy-uploading-image-files-to-amazon-s3/

अपने settings.py फ़ाइल में :

ITEM_PIPELINES = { 
    'scrapy.contrib.pipeline.images.ImagesPipeline': 1 
} 

# This is going to be the amazon s3 bucket. 
# You need to use the below format so Scrapy 
# can parse it. !!Important don't forget to add 
# the trailing slash. 
IMAGES_STORE = 's3://my-bucket-name/' 

# The amount of days until we re-download the image 
IMAGES_EXPIRES = 180  

# You can add as many of these as you want 
IMAGES_THUMBS = { 
    'small': (50, 50), 
    'big': (300, 300) 
} 

AWS_ACCESS_KEY_ID = 'your-access-key' 
AWS_SECRET_ACCESS_KEY= 'your-secret-access-key' 

सुरक्षा मैं अमेज़न एडब्ल्यूएस इंटरफ़ेस में एक नया उपयोगकर्ता बनाने का सुझाव रखने के लिए और है कि उपयोगकर्ता केवल पढ़ने के लिए दे/अपनी बाल्टी को विशेषाधिकार लिखें।

अब हम कुछ संकुल कि डिफ़ॉल्ट रूप से Scrapy साथ नहीं आया था स्थापित करने की आवश्यकता:

pip install pillow 
pip intall boto 

तकिया छवि हेरफेर संभालती है और Boto पुस्तकालय S3 से कनेक्ट होता है प्रदान करेगा।

स्केपर आपके आइटम में छवि_रल्स कुंजी का उपयोग करने के लिए छवियों को देखने के लिए उपयोग करता है। यह छवि यूआरएल की एक सूची होनी चाहिए। एक बार डाउनलोड किया गया स्केपर छवियों के लिए छवि locaiton के विवरण लिखता है।

अपने items.py फाइल करने के लिए इन्हें जोड़ने के लिए मत भूलना:

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

अब भूल नहीं है वास्तव में अपने क्रॉल के दौरान image_urls कुंजी को भरने के लिए। एक बार जब आप अपनी साइट को क्रॉल अंतिम आउटपुट किसी खास आइटम के कुछ इस तरह दिखेगा:

'image_urls': [u'http://example.com/images/tshirt.jpg'], 
'images': [{ 'checksum': '264d3bbdffd4ab3dcb8f234c51329da8', 
     'path': 'full/069f409fd4cdb02248d726a625fecd8299e6055e.jpg', 
     'url': 'http://example.com/images/tshirt.jpg'}], 

अब आप S3 बाल्टी अमेज़न और एक नजर है पर जाएं। आपकी छवियां और थंबनेल सब वहाँ हैं!

फिर से, ब्लॉग पोस्ट के लिए निक वेरविमेरेन के लिए एक बड़ा धन्यवाद जो इस प्रश्न का उत्तर देता है!

1

@ 2083 मुझे आपके साथ एक ही समस्या मिली है। कोई त्रुटि और बोटो पहले से स्थापित नहीं है। आप यहां जवाब पा सकते हैं: https://doc.scrapy.org/en/latest/topics/feed-exports.html#topics-feed-storage-s3 "स्केपर केवल पाइथन 2 पर बोटो का समर्थन करता है" मुझे लगता है कि आप मेरे जैसे पायथन 3 का उपयोग कर रहे हैं। फिर, मैंने बॉटोकोर स्थापित किया। और यह काम किया!