1. 程式人生 > >用python3從網頁中爬取圖片下載到本地

用python3從網頁中爬取圖片下載到本地

前提:使用的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()

爬取的圖片
在這裡插入圖片描述

相關推薦

no