python爬虫,图片是无格式的

例如这个地址:http://huaban.com/pins/2817226/zoom/
F12查看到

<img id="zoomr_img" src="//img.hb.aicdn.com/a181ad7982b873c0aede230c74057b5071aed7c5bac2e-CZAvQ5" width="420" height="6170" data-baiduimageplus-ignore="1">

可以看到,图片地址是无格式的,打开这个链接,是个图片,但是浏览器另存会出错。
这种url生成图片的原理是什么,python爬虫该怎么分析这种地址呢。

阅读 6.8k
3 个回答
import requests
url = 'http://img.hb.aicdn.com/a181ad7982b873c0aede230c74057b5071aed7c5bac2e-CZAvQ5'
r = requests.get(url)
with open('1.bmp', 'wb') as w:
    w.write(r.content)

图片其实就是二进制。

http://img.hb.aicdn.com/a181ad7982b873c0aede230c74057b5071aed7c5bac2e-CZAvQ5

http://img.hb.aicdn.com/1.bmp意思是一样的,只不过后端把1.bmp保存成a181ad7982b873c0aede230c74057b5071aed7c5bac2e-CZAvQ5而已,后面的扩展名没有意义(.后面的扩展名只是便于理解,在Linux中一切皆文件,在windows中其实也一样,只不过为了用户方便,不同扩展名有不同的默认打开的方式而已)

import requests
url = 'http://img.hb.aicdn.com/a181ad7982b873c0aede230c74057b5071aed7c5bac2e-CZAvQ5'
r = requests.get(url)
with open('1.jpg', 'wb') as w:
    w.write(r.content)
    

一样的,后缀名就是个摆设,一切皆文件

可以先把图片保存下来,然后用标准库imghdr判断文件类型,然后重新保存文件或者修改文件名。

import imghdr
imghdr.what('pathto/tempImage') # gif, jpg, png...
import urllib
url = 'http://img.hb.aicdn.com/a181ad7982b873c0aede230c74057b5071aed7c5bac2e-CZAvQ5'
urllib.urlretrieve(url, 'D:/picture.jpg')

代码测试正常,python 2.7.14

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题