1. 程式人生 > >python爬蟲小試例項--爬取網頁圖片並下載

python爬蟲小試例項--爬取網頁圖片並下載

一、python安裝

在python的官網下載python版本,需要下載對應版本(在計算機-屬性中檢視自己是32位作業系統還是64位作業系統),我是64位的,就下載64位對應的安裝包了(如下圖:Windows x86-64 executable installer)。

官網下載地址如下:

https://www.python.org/downloads/release/python-360/

二、爬取百度貼吧頁面圖,主要實現一個簡單的爬蟲,目的是從一個百度貼吧頁面下載圖片。

1獲取網頁html文字內容;

2分析html中圖片的html標籤特徵,用正則解析出所有的圖片url連結列表

方法一urllib+re實現

#!/usr/bin/python # coding:utf-8 # 實現一個簡單的爬蟲,爬取百度貼吧圖片
 import urllib import re # 根據url獲取網頁html內容
 def getHtmlContent(url): page = urllib.urlopen(url) return page.read()
 # 從html中解析出所有jpg圖片的url # 百度貼吧html中jpg圖片的url格式為:<img ... src="XXX.jpg" width=...> 
def getJPGs(html): # 解析jpg圖片url的正則 
jpgReg = re.compile(r'<img.+?src="(.+?\.jpg)" width') # 注:這裡最後加一個'width'是為了提高匹配精確度 # 解析出jpg的url列表
 jpgs = re.findall(jpgReg,html) return jpgs # 用圖片url下載圖片並儲存成制定檔名
 def downloadJPG(imgUrl,fileName): urllib.urlretrieve(imgUrl,fileName) # 批量下載圖片,預設儲存到當前目錄下 
def batchDownloadJPGs(imgUrls,path = './'): # 用於給圖片命名 
count = 1 for url in imgUrls: downloadJPG(url,''.join([path,'{0}.jpg'.format(count)])) count = count + 1 # 封裝:從百度貼吧網頁下載圖片 
def download(url): html = getHtmlContent(url) jpgs = getJPGs(html) batchDownloadJPGs(jpgs) def main(): url = 'http://tieba.baidu.com/p/2256306796' download(url) if __name__ == '__main__':
main()

爬取結果:

執行上面指令碼,過幾秒種之後完成下載,可以在當前目錄下看到圖片已經下載好了

方法二、 requests + re實現

#coding:utf-8  #爬取百度貼吧圖片 
 import urllib2
 import urllib
 import re #開啟貼吧的html url="http://tieba.baidu.com/p/3825973883"
 response=urllib2.urlopen(url)
 html=response.read() #提取其中所有的圖片url(使用正則) 
reg=r'src="(http://imgsrc.*?\.jpg)"' imgre=re.compile(reg) imlist=re.findall(reg,html) #下載圖片到本地 cnt=1 for imurl in imlist: print cnt print imurl urllib.urlretrieve(imurl,"%s.jpg"%cnt); 
cnt+=1