圖片爬到后存儲(chǔ)文件,windows下,打開圖片失敗
req = urllib2.urlopen('http://idcbgp.cn/') ? #抓取網(wǎng)頁
buf = req.read() ? #返回一個(gè)str
listurl = re.findall(r'//.+\.jpg',buf) ? #利用
print listurl
i = 0
for url in listurl:
? ?f = open(str(i)+'.jpg','w')
? ?url1 = 'http:'+url? ?#因?yàn)闆]有http開頭,報(bào)錯(cuò),所以我每個(gè)元素手動(dòng)添加了
? ?req = urllib2.urlopen(url1) ? ?#遍歷打開網(wǎng)址
? ?bug = req.read()
? ?f.write(buf)
? ?i += 1
? ?if i == 10:
? ? ? ?break
? ?f.close()
在windows下,打開圖片提示圖片出錯(cuò),求解答??
謝謝大家了?。?!
2019-05-06
buf = req.read().decode("utf-8") 沒寫decode圖片出來一半或是錯(cuò)的圖片,加了就正確了,謝謝
2018-01-27
import re
import urllib
req = urllib.request.urlopen('http://idcbgp.cn/course/list')
#此處加上decode(),不然拿下來的數(shù)據(jù)都是亂碼
buf = req.read().decode("utf-8")
#老師講課的url地址已經(jīng)發(fā)生改變,改一下正則匹配就好
# listurl = re.findall(r'src=.+\.jpg', buf)
listurl = re.findall(r'//img.+?\.jpg', buf)
# 改成非貪婪模式就行了
#前面沒有了http:,那么這里手動(dòng)加上
for index,app_id in enumerate(listurl):
? ? listurl[index] = str(app_id).replace('//', 'http://')
? ? print(index, listurl[index])
print(listurl)
i = 0
for url in listurl:
? ? #寫入模式修改為“wb+”,不然不支持將bytes寫入,親測(cè)
? ? f = open(str(i)+".jpg", "wb+")
? ? req = urllib.request.urlopen(url)
? ? buf = req.read()
? ? f.write(buf)
? ? i+=1
2018-01-27
我用的pycharm,今天才手寫的代碼,改了幾個(gè)小地方,樓主看看注意到?jīng)]有,謝謝。
2018-01-21
重新爬去