IT评测·应用市场-qidao123.com

标题: 爬虫案例-爬取网页图片 [打印本页]

作者: 张春    时间: 2025-1-1 04:49
标题: 爬虫案例-爬取网页图片
1、安装依赖库

  1. #以下是安装http请求的第三方库
  2. pip install requests urllib3  
  3. #以下是安装处理图片的第三方库
  4. pip install image pillow
  5. #以下是安装python解析html的第三方库
  6. pip install beautifulsoup4
复制代码
2、爬取图片的代码

  1. import requests
  2. import urllib3
  3. import urllib.parse
  4. import os
  5. from io import BytesIO
  6. from PIL import Image
  7. from bs4 import BeautifulSoup
  8. url = "URL"
  9. http = urllib3.PoolManager()
  10. header = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36 Edg/131.0.0.0"}
  11. request = http.request('POST', url, headers=header)
  12. '''以下测试用的
  13. #响应数据
  14. #print(request.data.decode())
  15. #响应头信息
  16. #print(request.headers)
  17. #状态码
  18. #print(request.status)
  19. '''
  20. data = request.data.decode()
  21. #print(data)
  22. soup = BeautifulSoup(data,"html.parser")
  23. # 查找所有<img>标签
  24. i = 0
  25. for img_tag in soup.find_all("img"):
  26.     i += 1
  27.     image_url = img_tag.get("src")
  28.     #print(image_url)
  29.     output_folder = r"C:\Users\zzx\Desktop\图片"+"/"
  30.     if not os.path.exists(output_folder):
  31.         os.makedirs(output_folder)
  32.         #print(image_url)
  33.     if image_url:
  34.         # 将可能的相对 URL 转换为完整的 URL
  35.         image_url_http = urllib.parse.urljoin(url,image_url)
  36.         #print(image_url_http)
  37.         resp = requests.get(image_url_http,stream=True)
  38.       #print(resp)
  39.     try:
  40.         image_data = BytesIO(resp.content)
  41.       #print(image_data)
  42.         image = Image.open(image_data)
  43.         if '.gif' not in  image_url_http.split("/")[-1]:
  44.             image.save(os.path.join(output_folder, f'image_{i}.png'))
  45.             print(f"图像已成功保存到 {os.path.join(output_folder, f'image_{i}.png')}")
  46.         elif '.gif' in image_url_http.split("/")[-1]:
  47.             image.save(os.path.join(output_folder, f'image_{i}.gif'))
  48.             print(f"图像已成功保存到 {os.path.join(output_folder, f'image_{i}.gif')}")
  49.     except Exception as e :
  50.         print(f"保存图像时出错:{e}")
  51.         try:
  52.             # 将图像转换为常见的 JPEG 格式
  53.             if image.mode in ('RGBA', 'LA'):
  54.                 image = image.convert('RGB')
  55.             image.save(os.path.join(output_folder, f'image_{i}.jpg'))
  56.             print(f"图像已成功保存到 {os.path.join(output_folder, f'image_{i}.jpg')}")
  57.         except Exception as e:
  58.           print(f"转换并保存图像时出错: {e}")
  59.     print(i,image_url)
复制代码
3、结果图

      

      


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 IT评测·应用市场-qidao123.com (https://dis.qidao123.com/) Powered by Discuz! X3.4