1. 程式人生 > >爬網頁資料

爬網頁資料

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)