0

私は現在、画像による魚認識システムの構築からなる学生のデータサイエンティストプロジェクトに取り組んでいます。テンソルフローを使用してデータから意味を理解し、スクレイピーを使用して大量のデータ (魚の写真と彼の学名) を見つけます。

私はスクレイピーを初めて使用しますが、3 日から多くの作業を行っており、基本的なフィッシュベース スパイダーを作成しました (スパイダーのコードで URL を見つけることができます)。

import scrapy
from ..items import FishbaseItem

class FishbaseSpider(scrapy.Spider):
    name = 'fishbase'
    allowed_domains = ['fishbase.org']
    start_urls = [
        'http://fishbase.org/ListByLetter/ScientificNamesQ.htm',
    ]

    def parse(self, response):
        all_fish = response.xpath('//tbody/tr')
        for fish in all_fish:
            taxo = fish.xpath('td/a/i/text()').extract()
            fish_url = fish.xpath('td/a/@href').extract_first()

            item = FishbaseItem()
            item['taxonomy'] = taxo

            r=scrapy.Request(url=response.urljoin(fish_url),callback=self.parseFish)
            r.meta['item'] = item
            yield r

    def parseFish(self, response):
        item = response.meta['item']
        imgUrl = response.xpath('//div/span/div/a/img/@src').extract_first()
        item['img_urls'] = response.urljoin(imgUrl)
        yield item

アイテムファイルは次のとおりです。

import scrapy
class FishbaseItem(scrapy.Item):
    taxonomy = scrapy.Field()
    fish_url = scrapy.Field()
    img_urls = scrapy.Field()

と設定ファイル:

BOT_NAME = 'fishbase'

SPIDER_MODULES = ['fishbase.spiders']

NEWSPIDER_MODULE = 'fishbase.spiders'

ITEM_PIPELINES = {
    'scrapy.pipelines.images.ImagesPipeline': 1,
}
IMAGES_STORE = 'tmp/images/'

ROBOTSTXT_OBEY = True

必要な結果が得られますが、画像がダウンロードされません。理由がわかりません...さらに、他のサイトから大量の画像をダウンロードしました。

4

1 に答える 1