我目前正在研究学生的数据科学家项目,该项目包括按照图片构建鱼类识别系统。我们将使用tensorflow来理解数据和数据。 scrapy找到大量的数据(鱼图和他的学名)。
我是scrapy的新手,但是自从3天以来我一直在努力工作,我已经写了一个基本的鱼基蜘蛛(你会在蜘蛛中找到这个网址&# 39;代码):
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
我得到了我想要的结果,但图片不会下载。我不明白为什么......另外,我已从其他网站下载了大量图片。
答案 0 :(得分:2)
有两个问题:
image_urls
,而不是img_urls
(除非您覆盖IMAGES_URLS_FIELD
设置)。item['img_urls'] = response.urljoin(imgUrl)
行的网址。