Picture preview
Steps
這裏以搜狗搜圖作爲一個簡單的例子:
第一步就是獲取我們的需求了,輸入需要下載的圖片名字以及需要下載的圖片數量。
接下來我們需要在搜狗搜圖中輸入用戶的需求,透過鎖定搜索框,然後輸入需求,進入圖片瀏覽頁面。
然後我們點擊第一張圖片,進入另一個窗口,這個時候我們代碼中的窗口也需要跟着變換
b.switch_to.window(b.window_handles[1])
然後就可以開始我們的爬取了,同樣的通過得到我們的下載連接,再一張一張的下載到我們設定好的地址中。
爲了方便,我設置了一個默認的地址,即的形式文件。
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("下載完成")