鱼C论坛

 找回密码
 立即注册
查看: 1237|回复: 2

[已解决]关于爬取到的图片不能打开

[复制链接]
发表于 2020-7-27 15:38:23 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

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

x
求助!我在第一次运行时运行正常,并且图片可以下载,但是却说不支持此格式。第二次我再运行时,下载下来的图片都是0kb了,搞不清楚为什么
  1. import requests
  2. import urllib.request
  3. import re
  4. import os


  5. def open_url(url):
  6.     headers = {'User-Agent':
  7.                'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'}
  8.     html = requests.get(url, headers = headers)
  9.     print(html.status_code)
  10.     html = html.text
  11.     return html


  12. def get_img(html):
  13.     p = re.compile(r"<img src='(.*?.jpg)'", re.S)
  14.     img_list = re.findall(p, html)
  15.     print(img_list)
  16.     # print(type(html))
  17.     save(img_list)


  18. def save(img_list):
  19.     for each in img_list:
  20.         filename = each.split("/")[-1]
  21.         with open(filename,'wb')as fp:
  22.             img = open_url(each)
  23.             print(type(img))
  24.             img = img.encode(encoding = 'utf-8')
  25.             #fp.write(img)
  26.             #print(img)


  27. def mk_file():
  28.     os.chdir('C:/Users/巴鲁斯/Desktop/小美')


  29. if __name__ == '__main__':
  30.     url = 'https://www.xcar.com.cn/bbs/viewthread.php?tid=90672604&zoneclick=104603'
  31.     mk_file()
  32.     get_img(open_url(url))
复制代码
最佳答案
2020-7-27 15:53:17

改成这样,你 爬图片要用 html.content 二进制读取,而不是 .text 读取文本

  1. import requests
  2. import urllib.request
  3. import re
  4. import os


  5. def open_url(url):
  6.     headers = {'User-Agent':
  7.                'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'}
  8.     html = requests.get(url, headers = headers)
  9.     print(html.status_code)
  10.     return html


  11. def get_img(html):
  12.     p = re.compile(r"<img src='(.*?.jpg)'", re.S)
  13.     img_list = re.findall(p, html.text)
  14.     print(img_list)
  15.     # print(type(html))
  16.     save(img_list)


  17. def save(img_list):
  18.     for each in img_list:
  19.         filename = each.split("/")[-1]
  20.         with open(filename,'wb')as fp:
  21.             img = open_url(each)
  22.             print(type(img))
  23.             img = img.content
  24.             fp.write(img)
  25.             #print(img)


  26. def mk_file():
  27.     os.chdir('.')


  28. if __name__ == '__main__':
  29.     url = 'https://www.xcar.com.cn/bbs/viewthread.php?tid=90672604&zoneclick=104603'
  30.     mk_file()
  31.     get_img(open_url(url))
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-7-27 15:53:17 | 显示全部楼层    本楼为最佳答案   

改成这样,你 爬图片要用 html.content 二进制读取,而不是 .text 读取文本

  1. import requests
  2. import urllib.request
  3. import re
  4. import os


  5. def open_url(url):
  6.     headers = {'User-Agent':
  7.                'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'}
  8.     html = requests.get(url, headers = headers)
  9.     print(html.status_code)
  10.     return html


  11. def get_img(html):
  12.     p = re.compile(r"<img src='(.*?.jpg)'", re.S)
  13.     img_list = re.findall(p, html.text)
  14.     print(img_list)
  15.     # print(type(html))
  16.     save(img_list)


  17. def save(img_list):
  18.     for each in img_list:
  19.         filename = each.split("/")[-1]
  20.         with open(filename,'wb')as fp:
  21.             img = open_url(each)
  22.             print(type(img))
  23.             img = img.content
  24.             fp.write(img)
  25.             #print(img)


  26. def mk_file():
  27.     os.chdir('.')


  28. if __name__ == '__main__':
  29.     url = 'https://www.xcar.com.cn/bbs/viewthread.php?tid=90672604&zoneclick=104603'
  30.     mk_file()
  31.     get_img(open_url(url))
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-27 16:02:28 | 显示全部楼层
Twilight6 发表于 2020-7-27 15:53
改成这样,你 爬图片要用 html.content 二进制读取,而不是 .text 读取文本

谢谢,明白了,以后会注意
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-24 10:57

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表