0
点赞
收藏
分享

微信扫一扫

图片批量下载

Ad大成 2022-05-01 阅读 75

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()


举报

相关推荐

0 条评论