我目前正在从事一个学生的数据科学家项目,该项目包括通过图片构建鱼类识别系统。我们将使用 tensorflow 从数据和 scrapy 中获取意义,以找到大量数据(鱼图片和他的学名)。
我是scrapy的新手,但是自从3天以来我一直在工作,我写了一个基本的fishbase蜘蛛(你会在蜘蛛的代码中找到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
我得到了我想要的结果,但图像不会下载。我不明白为什么...另外,我从其他网站下载了大量图片。