爬網頁資料
阿新 • • 發佈:2018-12-18
import re #匯入正則表示式模組 import requests #python HTTP客戶端 編寫爬蟲和測試伺服器經常用到的模組 import random #隨機生成一個數,範圍[0,1] import os def mkdir(path): # 判斷路徑是否存在 # 存在 True # 不存在 False isExists=os.path.exists(path) # 判斷結果 if not isExists: os.makedirs(path) print (path+' 建立成功') return True else: # 如果目錄存在則不建立,並提示目錄已存在 print (path+' 目錄已存在') return False #定義函式方法 def spiderPic(html,keyword): print('正在查詢 ' + keyword +' 對應的圖片,下載中,請稍後......') for addr in re.findall('"objURL":"(.*?)"',html,re.S): #查詢URL print('正在爬取URL地址:'+str(addr)[0:30]+'...') #爬取的地址長度超過30時,用'...'代替後面的內容 try: pics = requests.get(addr,timeout=10) #請求URL時間(最大10秒) except requests.exceptions.ConnectionError: print('您當前請求的URL地址出現錯誤') continue creatDir = 'D:\\資料\\年齡性別\\myPaData\\woman\\' + keyword mkdir(creatDir) fq = open(creatDir + '\\' +(keyword+'_'+str(random.randrange(0,1000,4))+'.jpg'),'wb') #下載圖片,並儲存和命名 fq.write(pics.content) fq.close() #python的主方法 if __name__ == '__main__': #word = input('請輸入你要搜尋的圖片關鍵字:') f = open("D:\\資料\\年齡性別\\myPaData\\woman.txt") s=f.read() s1 = re.split(' ', s) #利用正則函式進行分割 for word in s1: print (word) result = requests.get('http://image.baidu.com/search/index?tn=baiduimage&ps=1&ct=201326592&lm=-1&cl=2&nc=1&ie=utf-8&word=' + word) spiderPic(result.text,word)