selenium搜狗搜圖簡單操作(爬取任意關鍵字的圖片)

Picture preview

在這裏插入圖片描述
在這裏插入圖片描述

Steps

這裏以搜狗搜圖作爲一個簡單的例子:

第一步就是獲取我們的需求了,輸入需要下載的圖片名字以及需要下載的圖片數量。

接下來我們需要在搜狗搜圖中輸入用戶的需求,透過xpathxpath鎖定搜索框,然後輸入需求,進入圖片瀏覽頁面。

然後我們點擊第一張圖片,進入另一個窗口,這個時候我們代碼中的窗口也需要跟着變換

b.switch_to.window(b.window_handles[1])

然後就可以開始我們的爬取了,同樣的通過xpathxpath得到我們的下載連接,再一張一張的下載到我們設定好的地址中。

爲了方便,我設置了一個默認的地址,即D:/+nameD:/ + name的形式文件。

path = "D://" + name
    if not os.path.exists(path):
        os.mkdir(path)

Coding

#-*- coding = utf-8 -*-
#@Time : 2020/6/30 17:15
#@Author : lifehappy
#@File : 搜狗搜圖selenium.py
#@Software : PyCharm

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

##記得要安裝driver到chorme瀏覽器的相應目錄下。
chromedriver_path = "C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe"

b = webdriver.Chrome(chromedriver_path)

def get_page(name):
    b.get("https://pic.sogou.com/")
    search_window = b.find_element_by_xpath(r'''//*[@id="form_querytext"]''')##get到輸入窗口。
    search_window.send_keys(name)##在輸入窗口輸入我們要查找的關鍵詞。
    search_window.send_keys(Keys.ENTER)##ENTER鍵,進入圖片瀏覽頁面。
    time.sleep(2)##設置休眠時間,玄學設定。

def start_spider(num, path):
    ##點擊第一張圖片獲得它的xpath。
    new_window = b.find_element_by_xpath(r'''/html/body/div[2]/div[2]/ul/li[1]/div/a[1]/img''')
    new_window.click()
    b.switch_to.window(b.window_handles[1])##因爲新開了一個窗口,我們一定要跳轉窗口才能完成後面的操作。
    for i in range(num):
        print("正在下載第%d張" % (i + 1))
        image_element = b.find_element_by_xpath(r'''//*[@id="imageBox"]/img''')##得到圖片連接的xpath
        link = image_element.get_attribute("src")
        link = requests.get(link)##轉換類型,爲了後面的下載。
        image_path = path + "//%d.jpg" % (i + 1)##圖片名稱設置爲第幾張。
        down_load(image_path, link)##下載
        next_page = b.find_element_by_xpath(r'''//*[@id="btnPgRgt"]/span''')##點擊按鈕到下一張圖片。
        next_page.click()
        time.sleep(1)

def down_load(path, link):
    with open(path, 'wb') as f:
        f.write(link.content)
        time.sleep(1)
        f.close()

if __name__ == "__main__":
    name = input("輸入下載圖片名稱:")
    num = int(input("輸入下載圖片數量:"))
    path = "D://" + name
    if not os.path.exists(path):
        os.mkdir(path)
    get_page(name)
    start_spider(num, path)
    print("下載完成")

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章