1.模拟浏览器操作进行自动下载图片
2.解放双手
#!/usr/bin/env.python
# -*- coding: utf-8 -*-
# -*- coding:utf8 -*-
# 下载动态网页图片
# 导入模块
import requests
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.action_chains import ActionChains # 模拟鼠标操作
from selenium.webdriver.common.keys import Keys # 模拟键盘操作
from selenium.webdriver.common.by import By
import time
# 模拟浏览器操作获取页面
def getnamepage(name):
b.maximize_window()
b.get("https://image.baidu.com/")
search_box = b.find_element(By.ID, "kw")
search_box.send_keys(name)
search_box.send_keys(Keys.ENTER)
time.sleep(5)
def download(imglist, num):
# 切换高清(修改处)
ele2 = b.find_element(by=By.XPATH, value='//*[@id="typeFilter"]/div[2]/ul/li[2]') # (修改处)
ele2.click()
time.sleep(15)
# 切换呆萌
# ele4 = b.find_element(by=By.XPATH, value='//*[@id="topRS"]/div[14]') # (修改处)
# ele4.click()
# time.sleep(15)
# 打开第一张图片,在此界面中点击左右切换图片
ele1 = b.find_element(by=By.XPATH, value='//*[@id="imgid"]/div[1]/ul/li[2]/div/div[2]/a/img')
ele1.click()
time.sleep(10)
b.switch_to.window(b.window_handles[1]) # 很重要的一步,切换窗口
x = 1 # 修改处
for i in range(1, num+1):
ele2 = b.find_element(By.XPATH, '//*[@id="currentImg"]')
img = ele2.get_attribute('src') # 获取当前图片的url连接
r = requests.get(img)
if r.status_code == 200:
path = "D:2/" # 修改处
filename = "%d.jpg"% x
print('正在爬取' + img)
if x < 10:
with open(path +"000"+filename, 'wb') as f:
f.write(r.content)
time.sleep(2)
f.close()
print("爬取成功")
if 10 <= x < 100:
with open(path + "00" + filename, 'wb') as f:
f.write(r.content)
time.sleep(2)
f.close()
print("爬取成功")
if x >= 100:
with open(path + "0" + filename, 'wb') as f:
f.write(r.content)
time.sleep(3)
f.close()
print("爬取成功")
if 10000> x >= 1000:
with open(path + filename, 'wb') as f:
f.write(r.content)
time.sleep(4)
f.close()
print("爬取成功")
x += 1
ele3 = b.find_element(By.XPATH, '/html/body/div[1]/div[2]/div/span[2]')
ele3.click()
time.sleep(8)
# 跳到下一张
else:
ele3 = b.find_element(By.XPATH, '/html/body/div[1]/div[2]/div/span[2]')
ele3.click()
time.sleep(7)
continue
if __name__=="__main__":
b = webdriver.Chrome() # 设置全局变量,否则输入绝对路径)
name = "高清美女壁纸" # 定义要搜索的内容,修改处
num = 200
imglist = []
getnamepage(name)
download(imglist, num)
b.close()