用python3從網頁中爬取圖片下載到本地
阿新 • • 發佈:2019-01-12
前提:使用的python是python3版本,2和3還是有很大的區別的。
1、先找一個有圖片的網頁(這裡找到的是新浪:http://photo.sina.com.cn)。右鍵,選擇最後一個檢查,就可以看到網頁的原始碼。然後是圖片的都是在標籤()中。
urllib.request是爬取網頁時需要用到的一個庫,re是正則匹配的一個庫。
具體可以參考一下這篇文章:
https://blog.csdn.net/duxu24/article/details/77414298
import urllib.request,re f=urllib.request.urlopen("http://photo.sina.com.cn") source = f.read() source = source.decode('utf-8') #先將擷取的目的碼取下來 print(re.search(r'(<img src=\")(.*)(\")',source))
可以看到是這樣的輸出,但是我們的目的是隻選取藍色的部分
改進
import urllib.request,re
f=urllib.request.urlopen("http://photo.sina.com.cn")
source = f.read()
source = source.decode('utf-8')
# print(source)
res = re.search(r'(<img src=\")(.*)(\")',source)
#加入這一部分
print(res.groups()[1])
但是輸出結果是這樣,說明上面分組的時候最後一個”被當成了最後面的”,所以加個alt即可
http://n.sinaimg.cn/news/transform/700/w1000h500/20180921/ebN_-hiixpup3269628.jpg" alt="2018年喜劇野生動物攝影大賽入圍作品" usemap="#Map01
最終
import urllib.request,re url=urllib.request.urlopen("http://photo.sina.com.cn") source = url.read() #將中文字元解碼成utf-8的形式 source = source.decode('utf-8') res = re.search(r'(<img src=\")(.*)(\" alt)',source) link=res.groups()[1] link_jpg=urllib.request.urlopen(link) f=open("test.jpg",'wb') f.write(link_jpg.read()) f.close()
爬取的圖片