欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Selenium 爬取百度图片

程序员文章站 2022-05-04 12:07:48
...

Selenium 爬取百度图片

# coding=utf-8
"""
获取10张百度图片
"""

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys
import time, requests


def download_img(kw):
    # 打开浏览器
    browser = webdriver.Chrome()
    time.sleep(3)

    # 对方访问对应的网页
    url = r'https://image.baidu.com/'
    browser.get(url)
    time.sleep(3)

    # 在输入框输入对应的key words
    keyword = browser.find_element_by_id('kw')
    keyword.send_keys(kw)  # 输入关键字
    keyword.send_keys(Keys.ENTER)  # enter
    time.sleep(3)

    # 设置图片尺寸
    size = browser.find_element_by_id('sizeFilter')
    big_size = browser.find_element_by_xpath('/html/body/div[1]/div[4]/div[2]/div/div[2]/div/div[1]')
    ActionChains(browser).click(size).move_to_element(big_size).click().perform()

    # 点击第一张图片
    first_pic = browser.find_element_by_xpath('//*[@id="imgid"]/div/ul/li[1]/div/a/img')
    ActionChains(browser).click(first_pic).perform()  # 调用perform()方法时,队列中的事件会依次执行。
    time.sleep(5)
    # 切换到新window中
    browser.switch_to.window(browser.window_handles[1])
    for i in range(20):
        # 获取图片
        pic = browser.find_element_by_xpath('//*[@id="currentImg"]')
        src = pic.get_attribute('src')
        r = requests.get(src)
        title = browser.find_element_by_class_name('pic-title')  # 同时输出图片标题
        print(i, '  ', title.text)
        if r.status_code == 200:
            # 将图片保存到文件
            file_name = r'D:\1. learning\python_web\pachong\img\{}.jpg'.format(i)
            with open(file_name, 'wb') as f:
                f.write(r.content)  # 文字使用r.text / 其他格式使用 r.content
            # 切换到下一张图
            next_btn = browser.find_element_by_class_name('img-next')
            next_btn.click()
            time.sleep(5)
    return


if __name__ == '__main__':
    download_img('米老鼠')

相关标签: 爬虫 爬虫