【问题标题】:I want to get first 10 images url from google search using Selenium Python我想使用 Selenium Python 从谷歌搜索中获取前 10 个图像 url
【发布时间】:2020-03-18 10:56:08
【问题描述】:

我想从谷歌搜索(不是 base64)中获取前 10 个图像 url。 我有代码:

import os
import base64
import time

from selenium.webdriver.common.keys import Keys
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager

searchterm = 'bananas'  # will also be the name of the folder
url = "https://www.google.com/search?q=banan&source=lnms&tbm=isch&sa=X&ved=2ahUKEwj-75rDlJLoAhWLHHcKHStFC6EQ_AUoAXoECA4QAw&biw=1867&bih=951"
options = webdriver.ChromeOptions()
options.add_argument("--start-maximized")
browser = webdriver.Chrome(executable_path=ChromeDriverManager().install(), options=options)
browser.get(url)
actions = webdriver.common.action_chains.ActionChains(browser)
header = {
    'User-Agent': "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.134 Safari/537.36"}
counter = 0
succounter = 0

if not os.path.exists(searchterm):
    os.mkdir(searchterm)

for i in range(0, 11):
    time.sleep(1)
    x = browser.find_elements_by_xpath('//*[@id="islrg"]/descendant::img')[i]
    x.click()
    i += 1
    if i > 10:
        break
    ba = browser.find_element_by_xpath('//* 
    [@id="Sva75c"]/div/div/div[3]/div[2]/div/div[1]/div[1]/div/div[2]/a/img')
    print(ba.get_attribute('src'))

它返回图片 url,但有时返回 base64。如何使脚本始终返回图像 url? 谢谢。

【问题讨论】:

标签: python selenium


【解决方案1】:

更改xpath获取链接而不是图像,然后获取href。

ba = browser.find_element_by_xpath("//div[@class='islrc']//a[@href][@rel='noopener']")
print(ba.get_attribute("href")

【讨论】:

  • 这实际上检索的是从中获取图像的网页的 URL,而不是图像的 URL。
【解决方案2】:

如果您使用以下代码抓取另一个搜索引擎 DuckDuckGo,则始终只能获取图片 URL:

search_query = 'what you want to find'
num_images = 10
driver_location = '/put/location/of/your/driver/here'

# setting up the driver
ser = Service(driver_location)
op = webdriver.ChromeOptions()
driver = webdriver.Chrome(service=ser, options=op)

# searching the query
driver.get(f'https://duckduckgo.com/?q={search_query}&kl=us-en&ia=web')

# going to Images Section
ba = driver.find_element(By.XPATH, "//a[@class='zcm__link  js-zci-link  js-zci-link--images']")
ba.click()

# getting the images URLs
for result in driver.find_elements(By.CSS_SELECTOR, '.js-images-link')[0:0+num_images]:
    imageURL = result.get_attribute('data-id')

    print(f'{imageURL}\n')

driver.quit()

【讨论】:

    猜你喜欢
    • 2011-07-18
    • 2013-12-24
    • 1970-01-01
    • 1970-01-01
    • 2012-08-19
    • 2021-08-23
    • 2016-07-03
    • 1970-01-01
    • 2019-09-02
    相关资源
    最近更新 更多