博客
关于我
爬取百度任意类型的图片
阅读量:350 次
发布时间:2019-03-04

本文共 2451 字,大约阅读时间需要 8 分钟。

以下是优化后的内容:


从百度图片下载图片的脚本开发过程

当今互联网时代,获取图片资源是一个常见需求。而百度图片作为一个专业的图片搜索引擎,其图片资源丰富且分类详细。通过结合Selenium自动化工具和requests库,可以编写一个自动下载图片的脚本,实现批量下载特定类型和数量的图片。

本文将详细介绍从搜索到下载的完整流程,并提供最终的Python代码实现。

一、核心思路

  • 模拟人工操作搜索图片

    使用Selenium模拟浏览器操作,访问百度图片首页,输入搜索关键词并点击搜索按钮。通过分析页面源码,找到第一张图片的链接。

  • 解析页面结构

    发现图片标签被包裹在a标签中,点击图片实际上会跳转到a标签的href地址。通过观察,a标签的name属性为“pn0”可以作为定位标准,用于提取第一张图片的链接。

  • 模拟点击图片

    通过Selenium,模拟用户点击第一张图片,获取下一张图片的链接。观察到每张图片的class属性为“currentImg”,可以用来定位图片进行下载。

  • 循环下载图片

    定义一个下载循环,根据需求下载指定数量的图片。每次循环中,定位当前图片并用requests库发送GET请求下载图片,并保存到本地指定路径。

  • 二、代码实现

    from selenium import webdriver
    import requests
    def looking(mubiao):
    # 初始化浏览器
    chrome_driver = 'E:\\chromedriver_win32\\chromedriver.exe'
    driver = webdriver.Chrome(executable_path=chrome_driver)
    # 打开百度图片主页
    driver.get('https://image.baidu.com/')
    # 输入搜索关键词并点击搜索
    driver.find_element_by_id('kw').send_keys(mubiao)
    driver.find_element_by_class_name('s_search').click()
    # 获取第一张图片的链接
    href = driver.find_element_by_name("pn0").get_attribute('href')
    print("图片搜索地址:", href)
    return href
    # 关闭浏览器
    driver.close()
    def download(url, n):
    # 初始化浏览器
    chrome_driver = 'E:\\chromedriver_win32\\chromedriver.exe'
    driver = webdriver.Chrome(executable_path=chrome_driver)
    # 打开目标页面
    driver.get(url)
    # 循环下载图片
    for i in range(n):
    # 定位当前图片
    current_img = driver.find_element_by_class_name("currentImg").get_attribute("src")
    # 下载图片
    response = requests.get(current_img)
    with open(r'E:\Photo\%s.jpg' % (i+1), 'wb') as f:
    print("第", i+1, "张图片下载完毕!!!")
    f.write(response.content)
    # 模拟点击下一张图片
    driver.find_element_by_xpath('//id("container")/span[2]/span').click()
    # 关闭浏览器
    driver.close()
    if __name__ == "__main__":
    # 输入要下载的图片类型
    mubiao = input("请输入要下载的图片类型:")
    # 输入下载数量
    n = int(input("请输入下载数量:"))
    # 获取搜索地址
    url = looking(mubiao)
    # 开始下载
    download(url, n)

    三、关键技术解析

  • Selenium模拟浏览器操作

    通过Selenium驱动,模拟浏览器的初始访问、搜索输入和图片点击操作,实现了自动化操作。

  • 页面源码分析

    通过查看页面源码,发现图片标签被包裹在a标签中,且a标签的name属性为“pn0”可以定位到第一张图片。

  • 循环下载逻辑

    在下载循环中,通过定位当前图片的class属性“currentImg”实现了图片的连续下载,确保每次下载的图片都是最新的。

  • requests库的HTTP请求

    使用requests库发送GET请求,轻松实现图片的网络下载,并将图片内容写入本地文件。

  • 四、使用说明

  • 安装依赖

    需要安装Selenium和requests库。请根据自己的操作系统安装相应版本的驱动程序。

  • 配置chromedriver

    确保chromedriver.exe的路径正确,避免路径错误。

  • 图片保存路径

    默认保存路径为E:\Photo\,请根据实际需求调整保存目录。

  • 输入参数

    运行脚本时,输入搜索关键词和下载数量即可开始下载。


  • 以上代码和解释完整地展示了从百度图片下载图片的完整流程,适合用于批量下载图片资源。

    转载地址:http://wfhe.baihongyu.com/

    你可能感兴趣的文章
    Nginx的使用总结(一)
    查看>>
    Nginx的是什么?干什么用的?
    查看>>
    Nginx访问控制_登陆权限的控制(http_auth_basic_module)
    查看>>
    nginx负载均衡器处理session共享的几种方法(转)
    查看>>
    nginx负载均衡的5种策略(转载)
    查看>>
    nginx负载均衡的五种算法
    查看>>
    Nginx配置ssl实现https
    查看>>
    Nginx配置TCP代理指南
    查看>>
    Nginx配置代理解决本地html进行ajax请求接口跨域问题
    查看>>
    Nginx配置参数中文说明
    查看>>
    Nginx配置好ssl,但$_SERVER[‘HTTPS‘]取不到值
    查看>>
    Nginx配置实例-负载均衡实例:平均访问多台服务器
    查看>>
    NIFI大数据进阶_连接与关系_设置数据流负载均衡_设置背压_设置展现弯曲_介绍以及实际操作---大数据之Nifi工作笔记0027
    查看>>
    NIO ByteBuffer实现原理
    查看>>
    Nio ByteBuffer组件读写指针切换原理与常用方法
    查看>>
    NIO Selector实现原理
    查看>>
    nio 中channel和buffer的基本使用
    查看>>
    NISP一级,NISP二级报考说明,零基础入门到精通,收藏这篇就够了
    查看>>
    Nitrux 3.8 发布!性能全面提升,带来非凡体验
    查看>>
    NI笔试——大数加法
    查看>>