乐于分享
好东西不私藏

python自动化系列:轻松从网页批量下载图片

python自动化系列:轻松从网页批量下载图片

作品介绍
作品名称:轻松从网页批量下载图
用到的库:os、requests、bs4、urllib
作品简介:该实例适用于从指定的网页中提取所有图片链接,并将这些图片下载保存到本地如果您需要更复杂的功能,例如处理JavaScript生成的内容或需要登录才能访问的页面,可能需要使用如Selenium等更高级的工具。

实现过程

一、导入必要的库

      import osimport requestsfrom bs4 import BeautifulSoupfrom urllib.parse import urljoin, urlparse
      二、函数定义:download_images_from_url
        def download_images_from_url(url, save_dir='./images'):    """从给定的URL下载所有图片到本地目录。    Args:        url (str): 目标网页的URL。        save_dir (str): 保存图片的本地目录,默认为当前目录下的'./images'。    """
        三、创建保存图片的目录
        • 如果指定的保存目录不存在,则创建该目录,确保后续可以保存图片文件。
            if not os.path.exists(save_dir):        os.makedirs(save_dir)
          四、获取网页内容
          • 使用requests.get()方法获取网页内容,并通过raise_for_status()检查请求状态,确保请求成功。
              response = requests.get(url)    response.raise_for_status()  # 检查请求是否成功
            五、解析网页内容
            • 使用BeautifulSoup解析HTML文本,以便后续查找和处理页面中的图片标签。
                soup = BeautifulSoup(response.text, 'html.parser')
            六、查找所有图片链接
            • 使用find_all('img')查找所有的<img>标签。
            • 提取每个<img>标签的src属性值作为图片链接。如果src属性存在,则使用urljoin将其转换为绝对路径,形成完整的图片URL列表。
                img_tags = soup.find_all('img')    img_urls = [urljoin(url, img['src']) for img in img_tags if 'src' in img.attrs]    print(img_urls)
            七、下载图片
            • 遍历所有图片链接,尝试下载每个图片:
              • 发送GET请求并启用流模式以节省内存。
              • 使用urlparse解析URL,从中提取出文件名。
              • 构建保存路径,打开文件并逐块写入数据。
              • 打印成功或失败的消息,便于调试。
                for img_url in img_urls:        try:            img_response = requests.get(img_url, stream=True)            img_response.raise_for_status()            parsed_url = urlparse(img_url)            img_filename = os.path.basename(parsed_url.path)            if not img_filename:  # 如果没有文件名,则跳过                continue            img_path = os.path.join(save_dir, img_filename)            with open(img_path, 'wb'as img_file:                for chunk in img_response.iter_content(1024):                    img_file.write(chunk)            print(f"Downloaded {img_url} to {img_path}")        except Exception as e:            print(f"Failed to download {img_url}{e}")
            八、主程序入口
            • 设置目标网页URL,并调用download_images_from_url函数执行图片下载任务。
            if __name__ == "__main__":    url = "https://youzhiyouxing.cn/materials"    download_images_from_url(url)
            九、结语

            以上就是本次分享的全部内容,如果你有任何疑问或想要分享你的自动化办公经验,我们的评论区永远为你敞开。你的每一个点赞和转发,都是对我们最大的支持和鼓励!

            想要深入学习并获取文中的完整代码吗?很简单,关注我们的公众号,并回复文章标题,即可立即获取。

            再次感谢你的阅读,期待在下一次分享中与你相见!

            精选阅读
            python自动化系列:将多个工作簿数据分类汇总到一个工作簿
            python自动化系列:一键替换文档关键词
            python自动化系列:旋转PDF文件特定页面
            python自动化系列:过滤文本(txt)的内容
            python自动化系列:抓取财经精选新闻
            python自动化系列:一键重命名文件,轻松跟踪修改历史
            python自动化系列:一键删除PDF文档密码

            python自动化系列:pdf页面转图片

            python自动化系列:重新排列pdf页面的顺序

            python自动化系列:裁剪pdf特定页面特定区域

            python自动化系列:将Excel表格中的学生信息自动填充到一个word文档

            python自动化系列:轻松合并PDF文件特定页面

            python自动化系列:将Excel表格中的学生多条信息自动填充到一个Word文档

            python自动化系列:如何轻松为PDF文件添加统一水印

            python自动化系列:批量图片水印添加工具

            python自动化系列:一键提取PPT文字到Word

            python自动化系列:Python脚本实现GIF动画的快速生成

            python自动化系列:轻松获取豆瓣Top 250电影数据

            python自动化系列:自动删除重复图片并保留最新版本