当前位置:   article > 正文

Python从指定网页上下载所有图片到本地存储路径(PyCharm实现)

Python从指定网页上下载所有图片到本地存储路径(PyCharm实现)

运行前需要准备必要的包,`requests` 用于发起 HTTP 请求,`BeautifulSoup` 来自 bs4 用于解析 HTML,`urljoin` 来自 urllib.parse 用于拼接 URL,以及 `urlretrieve` 来自 urllib.request 用于下载文件。

  1. import os
  2. import requests
  3. from bs4 import BeautifulSoup
  4. from urllib.parse import urljoin
  5. from urllib.request import urlretrieve

先定义 download_images 函数,接受 url(包含图片的网页的URL)和 save_dir(保存图像的目录)这两个参数,再检查指定的目录 save_dir 是否不存在,如果不存在,则使用os.makedirs(save_dir) 创建该目录。用 requests.get(url) 发送 HTTP GET 请求到 url 变量中指定的 URL。用 response.raise_for_status() 来检查请求是否成功,否则会引发异常。用 BeautifulSoup 和 html.parser 这个解析器来解析响应内容。用 soup.find_all('img') 找到 HTML 内容中的所有图像标签。

  1. def download_images(url, save_dir):
  2. if not os.path.exists(save_dir):
  3. os.makedirs(save_dir)
  4. response = requests.get(url)#发送http请求
  5. response.raise_for_status() # 如果请求失败,抛出异常
  6. soup = BeautifulSoup(response.text, 'html.parser')#解析界面
  7. image_links = soup.find_all('img')

在函数中遍历找到的每个图像标签,并提取包含图像 URL 的 src 属性。如果图像 URL 是相对路径,则使用 urljoin(url, img_url) 将其转换为绝对 URL。图像名称通过提取 URL 的最后一部分(img_url.split('/')[-1])并与保存目录路径连接而确定,使用 os.path.join、urlretrieve(img_url, img_name) 从 URL 下载图像,并将其保存到指定目录。

  1. for img in image_links:
  2. img_url = img.get('src')
  3. if not img_url.startswith(('http://','https://')):#相对转绝对路径
  4. img_url = urljoin(url, img_url)
  5. img_name = os.path.join(save_dir, img_url.split('/')[-1])
  6. urlretrieve(img_url, img_name)
  7. print(f"Downloaded: {img_name}")

最后用实际要从中提取图像的网页的 URL 和要保存图像的目录路径替换占位符 `"https://"` 和 `"D:\"`。

总代码如下:

  1. import os
  2. import requests
  3. from bs4 import BeautifulSoup
  4. from urllib.parse import urljoin
  5. from urllib.request import urlretrieve
  6. def download_images(url, save_dir):
  7. if not os.path.exists(save_dir):
  8. os.makedirs(save_dir)
  9. response = requests.get(url)#发送http请求
  10. response.raise_for_status() # 如果请求失败,抛出异常
  11. soup = BeautifulSoup(response.text, 'html.parser')#解析界面
  12. image_links = soup.find_all('img')
  13. for img in image_links:
  14. img_url = img.get('src')
  15. if not img_url.startswith(('http://','https://')):#相对转绝对路径
  16. img_url = urljoin(url, img_url)
  17. img_name = os.path.join(save_dir, img_url.split('/')[-1])
  18. urlretrieve(img_url, img_name)
  19. print(f"Downloaded: {img_name}")
  20. url = "https://"#你要爬取的网页
  21. save_dir = "D:\"#存储路径
  22. download_images(url, save_dir)
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/216475
推荐阅读
相关标签
  

闽ICP备14008679号