首页 > 解决方案 > 使用 selenium 仅从谷歌刮取大(高清)图像

问题描述

在这里,我使用此代码从谷歌截取图像并将其保存在目录中。但它也需要小图像,所以我应该如何保持一个条件,使它只大(高清)图像。

from selenium import webdriver
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time


driver = webdriver.Chrome('/Path_to_driver/chromedriver')
driver.get('https://www.google.co.in/')

box = driver.find_element_by_xpath('/html/body/div[1]/div[3]/form/div[1]/div[1]/div[1]/div/div[2]/input')
box.send_keys('mobile phone camera')
box.send_keys(Keys.ENTER)

driver.find_element_by_xpath('//*[@id="hdtb-msb"]/div[1]/div/div[2]/a').click()


#Will keep scrolling down the webpage until it cannot scroll no more
last_height = driver.execute_script('return document.body.scrollHeight')
while True:
    driver.execute_script('window.scrollTo(0,document.body.scrollHeight)')
    time.sleep(2)
    new_height = driver.execute_script('return document.body.scrollHeight')
    print(new_height)
    try:
        driver.find_element_by_xpath('//*[@id="islmp"]/div/div/div/div/div[5]/input').click()
        time.sleep(2)
    except:
        pass
    if new_height == last_height:
        break
    last_height = new_height
a = 1500

for i in range(1,50):
    a +=1
    try:
        driver.find_element_by_xpath('//*[@id="islrg"]/div[1]/div['+str(i)+']/a[1]/div[1]/img').screenshot('./images/ ('+str(a)+').png')
    except:
        pass

任何建议都会很棒,因为我是硒新手。谢谢

标签: pythonseleniumselenium-webdriverweb-scrapingscrapy

解决方案


google图片有一个Tools选项,可以只选择大图的搜索结果,而且不截屏,建议你把所有图片源都获取,然后单独下载图片,比截屏好我认为的图像。

您甚至可以通过单击搜索结果中的每个图像并从那里获取图像源链接来进一步了解它,这将为您提供原始质量的图像。

我附上一些图片供您参考。

1-谷歌图片工具选项

谷歌图片工具选项

2-缩略图图像源链接

图片来源链接

3-原始图片来源链接(需要点击图片)

原图来源链接


推荐阅读