本人長期出售超大量微博數據、旅遊網站評論數據,並提供各類指定數據爬取服務,Message to YuboonaZhang@Yahoo.com。同時歡迎加入社交媒體數據交流羣:99918768python
最近在作機器學習下的人臉識別的學習,機器學習這個東西有點暴力,很大程度上靠訓練的數據量來決定效果。爲了找數據,經過一個博客的指導,瀏覽了幾個很知名的數據集。git
幾個大型數據集是經過發郵件申請進行下載,幾個小型數據集直接在網頁的連接下載,還有一個Pubfig數據集則是提供了大量圖片的連接來讓咱們本身寫程序來下載。github
權衡了數據量的需求,最後選擇Pubfig的數據集,因而就本身寫了一個python圖片採集程序,裏面用了urllib和requests兩種方法.app
這個數據文件提供了在數據集中出現的全部人物
這個數據文件提供了每一個人的urls機器學習
能夠看出來這個數據集的處理其實很是簡單了,能夠經過readlines的方式存進列表用空格分開一下數據就能夠把urls提取出來了。socket
urls在文件的中後部,寫個文件把它單純地提取出來,方便使用。
我單獨把Miley_Cyrus的部分提取出來放了一個txt文件學習
pic_url = [] with open('./Miley_Cyrus.txt') as f: for i in f.readlines(): pic_url.append(i.strip('\r\n')) urls = [] for s in pic_url: _, _, _, url, _, _ = s.split() urls.append(url) # 寫入到文件裏面 with open('url.data', 'w') as f: for i in urls: f.write(i) f.write('\n')
import urllib.request as request import socket import os # 在同級目錄新建文件夾存圖片 os.mkdir('./img') # 爲請求增長一下頭 user_agent = 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.62 Safari/537.36' headers = ('User-Agent', user_agent) opener = request.build_opener() opener.addheaders = [headers] request.install_opener(opener) # 設定一下無響應時間,防止有的壞圖片長時間沒辦法下載下來 timeout = 20 socket.setdefaulttimeout(timeout) # 從文件裏面讀urls urls = [] with open('./url.data') as f: for i in f.readlines(): if i != '': urls.append(i) else: pass # 經過urllibs的requests獲取全部的圖片 count = 1 bad_url = [] for url in urls: url.rstrip('\n') print(url) try: pic = request.urlretrieve(url, './img3/%d.jpg' % count) print('pic %d' % count) count += 1 except Exception as e: print(Exception, ':', e) bad_url.append(url) print('\n') print('got all photos that can be got') # 把沒有抓取到的urls保存起來 with open('bad_url3.data', 'w') as f: for i in bad_url: f.write(i) f.write('\n') print('saved bad urls')
import requests import socket import os # 在同級目錄新建文件夾存圖片 os.mkdir('./img') # 設定一下無響應時間,防止有的壞圖片長時間沒辦法下載下來 timeout = 20 socket.setdefaulttimeout(timeout) # 從文件裏面讀urls urls = [] with open('./url.data') as f: for i in f.readlines(): if i != '': urls.append(i) else: pass # 爲請求增長一下頭,獲取圖片 user_agent = 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.62 Safari/537.36' headers = { 'User-Agent': user_agent } bad_url = [] count = 1 for url in urls: url.rstrip('\n') print(url) try: pic = requests.get(url, headers=headers) with open('./img2/%d.jpg' % count, 'wb') as f: f.write(pic.content) f.flush() print('pic %d' % count) count += 1 except Exception as e: print(Exception, ':', e) bad_url.append(url) print('\n') print('got all photos that can be got') # 保存壞連接 with open('bad_url.data', 'w') as f: for i in bad_url: f.write(i) f.write('\n') print('saved bad urls')
8aoy1.cn網站