Python爬虫:自动爬取图片并保存

作者:新兰2024.01.08 12:17浏览量:22

简介:本文将指导你如何使用Python编写一个简单的爬虫程序,自动爬取网页上的图片并保存到本地。我们将使用requests和BeautifulSoup库来完成这个任务。首先,确保你已经安装了这两个库。如果没有安装,可以使用以下命令进行安装:pip install requests beautifulsoup4。

要爬取网页上的图片,我们首先需要找到图片的URL。在HTML中,图片通常使用img标签表示,其src属性就是图片的URL。我们可以使用BeautifulSoup库来解析HTML,并找到所有的img标签。以下是实现这一功能的Python代码:

  1. import requests
  2. from bs4 import BeautifulSoup
  3. import os
  4. # 定义保存图片的文件夹路径
  5. image_folder = 'images'
  6. if not os.path.exists(image_folder):
  7. os.makedirs(image_folder)
  8. # 定义要爬取的网页URL
  9. url = 'http://example.com'
  10. # 发送HTTP请求获取网页内容
  11. response = requests.get(url)
  12. response.encoding = 'utf-8' # 设置编码类型,确保正确解析网页内容
  13. # 使用BeautifulSoup解析网页内容
  14. soup = BeautifulSoup(response.text, 'lxml')
  15. # 找到所有的img标签,并提取其src属性值(图片URL)
  16. img_tags = soup.find_all('img')
  17. for img in img_tags:
  18. img_url = img.get('src')
  19. # 如果img_url以http开头,则认为这是一个绝对URL,直接使用该URL下载图片
  20. if img_url.startswith('http'):
  21. save_path = os.path.join(image_folder, img_url.split('/')[-1]) # 构造图片保存路径
  22. response = requests.get(img_url)
  23. with open(save_path, 'wb') as f: # 以二进制写入模式打开文件
  24. f.write(response.content) # 将图片内容写入文件
  25. # 如果img_url以//开头,则认为这是一个相对URL,需要将http://或https://添加到URL开头后下载图片
  26. elif img_url.startswith('//'):
  27. img_url = 'http:' + img_url # 构造绝对URL
  28. save_path = os.path.join(image_folder, img_url.split('/')[-1]) # 构造图片保存路径
  29. response = requests.get(img_url)
  30. with open(save_path, 'wb') as f: # 以二进制写入模式打开文件
  31. f.write(response.content) # 将图片内容写入文件

以上代码首先定义了保存图片的文件夹路径和要爬取的网页URL。然后发送HTTP请求获取网页内容,并使用BeautifulSoup解析网页内容。接着找到所有的img标签,并提取其src属性值(图片URL)。对于每个img标签,如果其src属性值为绝对URL,则直接使用该URL下载图片;如果为相对URL,则将其转换为绝对URL后下载图片。最后将下载的图片保存到指定的文件夹中。
需要注意的是,以上代码只是一个简单的示例,可能无法处理所有的网页结构和图片URL模式。在实际应用中,需要根据具体的网页结构和需求进行相应的调整和优化。此外,爬取网页上的图片可能会涉及到版权问题,请在使用时遵守相关法律法规和网站的使用协议。