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

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

以下是优化后的内容:


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

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

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

一、核心思路

  • 模拟人工操作搜索图片

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

  • 解析页面结构

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

  • 模拟点击图片

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

  • 循环下载图片

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

  • 二、代码实现

    from selenium import webdriverimport requestsdef 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/

    你可能感兴趣的文章
    Objective-C实现NQueen皇后问题算法(附完整源码)
    查看>>
    Objective-C实现number of digits解字符数算法(附完整源码)
    查看>>
    Objective-C实现NumberOfIslands岛屿的个数算法(附完整源码)
    查看>>
    Objective-C实现numerical integration数值积分算法(附完整源码)
    查看>>
    Objective-C实现n个取m个数的组合算法(附完整源码)
    查看>>
    Objective-C实现N数理论(质素相关)算法(附完整源码)
    查看>>
    Objective-C实现n皇后问题算法(附完整源码)
    查看>>
    Objective-C实现O(E + V) 中找到 0-1-graph 中的最短路径算法(附完整源码)
    查看>>
    Objective-C实现OCR文字识别(附完整源码)
    查看>>
    Objective-C实现odd even sort奇偶排序算法(附完整源码)
    查看>>
    Objective-C实现ohms law欧姆定律算法(附完整源码)
    查看>>
    Objective-C实现P-Series algorithm算法(附完整源码)
    查看>>
    Objective-C实现page rank算法(附完整源码)
    查看>>
    Objective-C实现PageRank算法(附完整源码)
    查看>>
    Objective-C实现pancake sort煎饼排序算法(附完整源码)
    查看>>
    Objective-C实现pascalTriangle帕斯卡三角形算法(附完整源码)
    查看>>
    Objective-C实现PascalTriangle帕斯卡三角算法 (附完整源码)
    查看>>
    Objective-C实现password generator复杂密码生成器算法(附完整源码)
    查看>>
    Objective-C实现patience sort耐心排序算法(附完整源码)
    查看>>
    Objective-C实现PCA(附完整源码)
    查看>>