使用scrapy从多个网址下载谷歌图片

时间:2012-06-21 16:56:09

标签: image url scrapy

我正在尝试从Google图片中的搜索中下载多个网址中的图片。

但是,我只想要每个网址中的15张图片。

class imageSpider(BaseSpider):
    name = "image"
    start_urls = [
        'https://google.com/search?q=simpsons&tbm=isch'
        'https://google.com/search?q=futurama&tbm=isch'
        ]


def parse(self,response):
    hxs = HtmlXPathSelector(response)
    items = []
    images = hxs.select("//div[@id='ires']//div//a[@href]")
    count = 0
    for image in images:
        count += 1
        item = ImageItem()
        image_url = image.select(".//img[@src]")[0].extract()
        import urlparse
        image_absolute_url = urlparse.urljoin(response.url, image_url.strip())
        index = image_absolute_url.index("src")
        changedUrl = image_absolute_url[index+5:len(image_absolute_url)-2]
        item['image_urls'] = [changedUrl]
        index1 = site['url'].index("search?q=")
        index2 = site['url'].index("&tbm=isch")
        imageName = site['url'][index1+9:index2]
        download(changedUrl,imageName + str(count)+".png")
        items.append(item)
        if count == 15:
            break
    return items

下载功能下载图像(我有代码。这不是问题)。

问题在于,当我休息时,它会在第一个网址处停止,并且永远不会继续到下一个网址。我怎么能让它为第一个网址下载15个图像,然后为第二个网址下载15个图像。我正在使用休息,因为每个谷歌图像页面中有大约1000个图像,我不想要那么多。

1 个答案:

答案 0 :(得分:1)

问题不在于break声明。您错过了start_urls中的逗号。

它应该是这样的:

start_urls = [
    'http://google.com/search?q=simpsons&tbm=isch',
    'http://google.com/search?q=futurama&tbm=isch'
]