鍍金池/ 問答/Python/ python爬蟲,圖片是無格式的

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爬蟲該怎么分析這種地址呢。

回答
編輯回答
青黛色

可以先把圖片保存下來,然后用標準庫imghdr判斷文件類型,然后重新保存文件或者修改文件名。

import imghdr
imghdr.what('pathto/tempImage') # gif, jpg, png...
2018年1月6日 03:55
編輯回答
晚風眠
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)
    

一樣的,后綴名就是個擺設,一切皆文件

2017年5月7日 21:46
編輯回答
九年囚
import urllib
url?= 'http://img.hb.aicdn.com/a181ad7982b873c0aede230c74057b5071aed7c5bac2e-CZAvQ5'
urllib.urlretrieve(url, 'D:/picture.jpg')

代碼測試正常,python 2.7.14

2018年1月25日 23:28