2016-07-25 11 views
0

Scrapy Frameworkとdjano-itemを使用してWebページから画像ダウンロードを設定しようとしています。フィールドが空のディレクトリですん画像処理パイプラインで画像がダウンロードされない

Scrapy log

私はそこに何が悪かったのか上の任意の情報を見つけることができませんが、画像:私はdoc で同じよ​​うにすべてを行っていると思いますが、私はこのように見ているログscrapyクロールを呼び出した後画像は含まれていません。

これは

class Event(models.Model): 
    title = models.CharField(max_length=100, blank=False) 
    description = models.TextField(blank=True, null=True) 
    event_location = models.CharField(max_length=100, blank = True, null= True) 
    image_urls = models.CharField(max_length = 200, blank = True, null = True) 
    images = models.CharField(max_length=100, blank = True, null = True) 
    url = models.URLField(max_length=200) 

    def __unicode(self): 
     return self.title 

私のモデルであり、これは私がクモから画像パイプラインに行くか

def parse_from_details_page(self, response): 
    "Some code" 
    item_event = item_loader.load_item() 
    #this is to create image_urls list (there is only one image_url allways) 
    item_event['image_urls'] = [item_event['image_urls'],] 
    return item_event 

あり、最終的にこれはScrapyプロジェクトのための私のsettings.pyです:

import sys 
import os 
import django 

DJANGO_PROJECT_PATH = os.path.join(os.path.dirname((os.path.abspath(__file__))), 'MyScrapy') 
#sys.path.insert(0, DJANGO_PROJECT_PATH) 
#sys.path.append(DJANGO_PROJECT_PATH) 
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "MyScrapy.settings") 
#os.environ["DJANGO_SETTINGS_MODULE"] = "MyScrapy.settings" 


django.setup() 

BOT_NAME = 'EventScraper' 

SPIDER_MODULES = ['EventScraper.spiders'] 
NEWSPIDER_MODULE = 'EventScraper.spiders' 

ITEM_PIPELINES = { 
    'scrapy.pipelines.images.ImagesPipeline': 100, 
    'EventScraper.pipelines.EventscraperPipeline': 200, 
} 

#MEDIA STORAGE URL 
IMAGES_STORE = os.path.join(DJANGO_PROJECT_PATH, "IMAGES") 

#IMAGES (used to be sure that it takes good fields) 
FILES_URLS_FIELD = 'image_urls' 
FILES_RESULT_FIELD = 'images' 

ご協力いただきありがとうございます

EDIT:[(False, <twisted.python.failure.Failure scrapy.pipelines.files.FileException: >)] 私はまだ:

私はそれが私のURLへのリクエストを作成しますが、結果のparamにitem_completedに私はこのようなのsomethinを取得し、このように見ているドキュメントからカスタムイメージパイプライン、get_media_requestsで

class MyImagesPipeline(ImagesPipeline): 

def get_media_requests(self, item, info): 
    for image_url in item['image_urls']: 
     import ipdb; ipdb.set_trace() 
     yield scrapy.Request(image_url) 

def item_completed(self, results, item, info): 
    import ipdb; ipdb.set_trace() 
    image_paths = [x['path'] for ok, x in results if ok] 
    if not image_paths: 
     raise DropItem("Item contains no images") 
    item['image_paths'] = image_paths 
    return item 

を使用しましたそれを修正する方法を知らない。 httpsでアドレスへの参照によって問題が発生する可能性はありますか?

答えて

0

私はスクラピーで非常に問題に直面しました。 私の解決策:

get_media_requests関数で生成したリクエストにヘッダーを追加しました。他のいくつかのヘッダーと共にユーザーエージェントとホストを追加しました。ここに私のヘッダーのリストがあります。

headers = { 
      'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8', 
      'Accept-Encoding': 'gzip, deflate, sdch', 
      'Accept-Language': 'en-GB,en-US;q=0.8,en;q=0.6', 
      'Connection': 'keep-alive', 
      'Upgrade-Insecure-Requests': '1', 
      'Proxy-Connection': 'keep-alive', 
      'Pragma': 'no-cache', 
      'Cache-Control': 'no-cache', 
      'Host': 'images.finishline.com', 
      'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36' 
     } 

ブラウザ(画像をダウンロードしているURL)に正確な画像URLを開きます。ブラウザのネットワークタブでヘッダーの一覧を確認してください。上記のリクエストに対するヘッダーが、それらと同じであることを確認してください。

希望します。