5

私は Python と Scrapy を学んでおり、それを使用して画像をダウンロードする方法を学んでいます。私は今ちょっと立ち往生しており、本当の問題が何であるかを理解できません。

スパイダーを実行すると、このエラー メッセージが表示されます

<None>: Unsupported URL scheme '': no handler available for that scheme

[imageflip] WARNING: File (unknown-error): Error downloading image from <GET

ここで私のpipelines.pyを見てください

import scrapy
from scrapy.contrib.pipeline.images import ImagesPipeline
from scrapy.exceptions import DropItem


class PriceoflipkartPipeline(object):
    def process_item(self, item, spider):
        return item

class MyImagesPipeline(ImagesPipeline):

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

def item_completed(self, results, item, info):
    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

ここで私のsettings.pyを見てください

SPIDER_MODULES = ['PriceoFlipkart.spiders']
NEWSPIDER_MODULE = 'PriceoFlipkart.spiders'
ITEM_PIPELINES = ['scrapy.contrib.pipeline.images.ImagesPipeline']
IMAGES_STORE = 'D:\PriceoFlipkart\Images'
IMAGES_EXPIRES = 90

ここで私のSpiderを見てください

import scrapy
from PriceoFlipkart.items import PriceoflipkartItem

class FlipkartSpider(scrapy.Spider):
    name = "imageflip"
    allowed_domains = ["flipkart.com"]
     start_urls = [
    "http://www.flipkart.com/moto-g-2nd-gen/p/itme5z8n9mt77ajr?pid=MOBDYGZ6SHNB7RFC&srno=b_1&ref=06f4e48c-9548-45fa-b3ac-fa5fdf0e0d22"
]

def parse(self, response):
    for sel in response.xpath('//body'):
        item = PriceoflipkartItem()
        item['image_urls'] = sel.select('//img[@class="productImage  current"]').extract()
        yield item

私のitem.pyに次のコードを追加しました

image_urls = scrapy.Field()
images = scrapy.Field()

イメージがダウンロードされるように正しく設定する方法を教えてください。私はWindows 8マシンを使用しています。前もって感謝します。


値 4294967295 は、符号なし32 ビット数で表すことができる最大値です。16 進数に変換すると、0xFFFFFFFF になります。

glGetAttribLocation()符号付き32 ビット値GLintであるtype の値を返します。取得した 0xFFFFFFFF 値を符号付き値として解釈すると、実際には -1 です。[*]

したがって、戻り値 -1 を取得しました。これは、属性が見つからなかったことを意味します。これの一般的な理由は次のとおりです。

  1. 指定された名前の属性がシェーダー コードに表示されません。
  2. 指定された名前の属性は使用されていないため、最適化されて削除されました。
  3. 渡されたプログラムは無効です。
  4. 渡されたプログラムは正常にリンクされませんでした。

この戻り値を取得することに対する驚きは、多くの場合、理由 2 によって引き起こされます。

[*] 少なくとも、符号付きの値を 2 の補数形式で表すマシンでは、これは当てはまります。これは最近のほとんどすべての場合です。

4

1 に答える 1

1

/@src画像の URL を抽出するための XPath が正しくありません。画像の URL のみを抽出するには、最後にXPath を含める必要があります。次のようにします。

item['image_urls'] = sel.select(
    '//img[@class="productImage  current"]/@src').extract()
于 2015-03-21T12:00:07.250 に答える