python基于Selenium方法爬取网页图片

selenium简介

selenium是一个用于web应用程序的自动化测试工具,通过Selenium可以写出自动化程序,拟人在浏览器对网页进行操作。selenium可以编写出自动化程序,简化手动保存的部分。

requests简介

requests库可以向第三方发送http请求,是一个用于网络请求的模块,通常以GET方式请求特定资源,请求中不应该包含请求体,所有需要向被请求资源传递的数据都应该通过 URL 向服务器传递。

webdriver简介

使用selenium,离不开webdriver。selenium编写出自动化程序告知浏览器驱动,浏览器驱动再去驱动浏览器。webdriver由浏览器厂家提供,以chrome浏览器为例:

首先,从设置中查找chrome版本号。

python基于Selenium方法爬取网页图片_第1张图片

接着,根据以下网址,查找浏览器对应的驱动版本号:

https://chromedriver.storage.googleapis.com/index.html

python基于Selenium方法爬取网页图片_第2张图片

直接下载即可,webdriver可以直接放置在项目路径下,路径指定更加方便。

代码实现

step1:驱动浏览器

from selenium import webdriver
from selenium.webdriver.chrome.service import Service

wd = webdriver.Chrome(service=Service(r'chromedriver.exe'))# 驱动浏览器
wd.get("https://image.baidu.com/search/index?tn=baiduimage&ps=1&ct=201326592&lm=-1&cl=2&nc=1&ie=utf-8&dyTabStr=MCwzLDYsMSw1LDQsOCw3LDIsOQ%3D%3D&word=%E6%B5%B7%E7%BB%B5%E5%AE%9D%E5%AE%9D")
wd.implicitly_wait(5) # 隐式等待,每隔半秒查询一次,五秒后结束

step2:通过xpath定位元素获取url()

from selenium.webdriver.common.by import By
elements = wd.find_elements(By.XPATH, "//*[@class='rich_pages wxw-img']")# 通过Xpath根据图片的class查询

step3:导入requests包,将图片保存到指定路径(PS:这里图片的class可以通过在网页中按f12查询,不建议使用css查询,很多class名有空格,但是在css中的空格表示后代关系)

import requests
import os

i = 0
for element in elements:
    i += 1
    print('----------------')
    t = element.get_attribute('src')
    print(t)# 打印出图片的src
    path = "D:\study material\海绵宝宝图\图{}.jpg".format(i)

    r = requests.get(t)# 通过requests种的get方法得到图片的src
    r.raise_for_status()
    with open(path, 'wb') as f:# 保存图片
        f.write(r.content)
        f.close()
        print('保存成功')
 
wd.quit()# 退出自动化测试

总体代码:

 # 移动鼠标到某个元素
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
import requests
import os
import time

wd = webdriver.Chrome(service=Service(r'C:\Users\Daisy\Desktop\蓝桥杯\chromedriver.exe'))
wd.implicitly_wait(5)

wd.get('https://image.baidu.com/search/index?tn=baiduimage&ps=1&ct=201326592&lm=-1&cl=2&nc=1&ie=utf-8&dyTabStr=MCwzLDYsMSw1LDQsOCw3LDIsOQ%3D%3D&word=%E6%B5%B7%E7%BB%B5%E5%AE%9D%E5%AE%9D')
elements = wd.find_elements(By.XPATH, "//*[@class='main_img img-hover']")

d = "D:\study material\海绵宝宝图"

i = 0
time.sleep(2)
for element in elements:
    i += 1
    print('----------------')
    t = element.get_attribute('src')
    print(t)
    path = "D:\study material\海绵宝宝图\图{}.jpg".format(i)

    r = requests.get(t)
    r.raise_for_status()
    with open(path, 'wb') as f:
        f.write(r.content)
        f.close()
        print('保存成功')

wd.quit()

最终效果:

python基于Selenium方法爬取网页图片_第3张图片

你可能感兴趣的:(python,selenium,开发语言)