#coding=utf-8 #urllib模塊提供了讀取Web頁面數據的接口 import urllib #re模塊主要包含了正則表達式 import re #定義一個getHtml()函數 def getHtml(url): page = urllib.urlopen(url) #urllib.urlopen()方法用於打開一個URL地址 html = page.read() #read()方法用於讀取URL上的數據 return html def getImg(html): reg = r'src="(.+?\.jpg)" pic_ext' #正則表達式,獲得圖片地址 imgre = re.compile(reg) #re.compile() 能夠把正則表達式編譯成一個正則表達式對象. imglist = re.findall(imgre,html) #re.findall() 方法讀取html 中包含 imgre(正則表達式)的 數據 #把篩選的圖片地址經過for循環遍歷並保存到本地 #核心是urllib.urlretrieve()方法,直接將遠程數據下載到本地,圖片經過x依次遞增命名 x = 0 for imgurl in imglist: urllib.urlretrieve(imgurl,'D:\E\%s.jpg' % x) x+=1 html = getHtml("http://tieba.baidu.com/p/xxxx") print getImg(html)
百度圖片爬蟲html
#!/usr/bin/env python #-*- coding:utf-8 -*- import re import requests def dowmloadPic(html,keyword): pic_url = re.findall('"objURL":"(.*?)",',html,re.S) i = 0 print '找到關鍵詞:'+keyword+'的圖片,如今開始下載圖片...' for each in pic_url: print '正在下載第'+str(i+1)+'張圖片,圖片地址:'+str(each) try: pic= requests.get(each, timeout=10) except requests.exceptions.ConnectionError: print '【錯誤】當前圖片沒法下載' continue string = '/home/adonis/picture'+keyword+'_'+str(i) + '.jpg' #resolve the problem of encode, make sure that chinese name could be store fp = open(string.decode('utf-8').encode('cp936'),'wb') fp.write(pic.content) fp.close() i += 1 if __name__ == '__main__': word = raw_input("Input key word: ") url = 'http://image.baidu.com/search/flip?tn=baiduimage&ie=utf-8&word='+word+'&ct=201326592&v=flip' result = requests.get(url) dowmloadPic(result.text,word)