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('米老鼠')