爬虫案例-爬取网页图片

打印 上一主题 下一主题

主题 1033|帖子 1033|积分 3099

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企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

张春

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表