[toc]
最近需要爬古籍影印版圖片拣技,但是對(duì)方網(wǎng)站有反爬蟲,于是考慮用selenium耍目,selenium比想象中的簡(jiǎn)單膏斤。右鍵的難點(diǎn)在于在元素上執(zhí)行右鍵之后,selenium就不能操作菜單了邪驮。
所以需要?jiǎng)e的辦法莫辨,有的使用autoit第三方軟件,比較繁瑣;有的用Python的win32庫沮榜,垃圾盘榨;找到了一個(gè)非常好的解決方案,用pyautogui
庫蟆融,這個(gè)庫是對(duì)win32的封裝草巡,發(fā)送按鍵簡(jiǎn)單粗暴,比selenium的發(fā)送按鍵還要人性化型酥,點(diǎn)贊山憨。代碼如下。
安裝pyautogui
pip install autogui
代碼如下
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys
import pyautogui
from time import sleep
# 代碼的健壯性
driver = webdriver.Chrome('d:/coding/chromedriver.exe') # Optional argument, if not specified will search path.
driver.get('http://www.reibang.com/');
# 選擇元素
wait = WebDriverWait(driver,10)
# 右鍵單擊圖片
img = wait.until(EC.element_to_be_clickable((By.TAG_NAME,'img')))
# 執(zhí)行鼠標(biāo)動(dòng)作
actions = ActionChains(driver)
# 找到圖片后右鍵單擊圖片
actions.context_click(img)
actions.perform()
# 發(fā)送鍵盤按鍵弥喉,根據(jù)不同的網(wǎng)頁萍歉,
# 右鍵之后按對(duì)應(yīng)次數(shù)向下鍵,
# 找到圖片另存為菜單
pyautogui.typewrite(['down','down','down','down','down','down','down','enter','enter'])
# 單擊圖片另存之后等1s敲回車
sleep(1)
pyautogui.typewrite(['enter'])
整個(gè)過程都是程序自動(dòng)運(yùn)行档桃,這個(gè)就構(gòu)成了自動(dòng)下載圖片的基礎(chǔ)枪孩。