私は現在、画像による魚認識システムの構築からなる学生のデータサイエンティストプロジェクトに取り組んでいます。テンソルフローを使用してデータから意味を理解し、スクレイピーを使用して大量のデータ (魚の写真と彼の学名) を見つけます。
私はスクレイピーを初めて使用しますが、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
必要な結果が得られますが、画像がダウンロードされません。理由がわかりません...さらに、他のサイトから大量の画像をダウンロードしました。