溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

python爬取人臉識(shí)別圖片數(shù)據(jù)集/python爬去圖片/python爬蟲(chóng)

發(fā)布時(shí)間:2020-06-21 11:35:41 來(lái)源:網(wǎng)絡(luò) 閱讀:1743 作者:張大力plus 欄目:大數(shù)據(jù)

本人長(zhǎng)期出售超大量微博數(shù)據(jù)、旅游網(wǎng)站評(píng)論數(shù)據(jù),并提供各種指定數(shù)據(jù)爬取服務(wù),Message to YuboonaZhang@Yahoo.com。同時(shí)歡迎加入社交媒體數(shù)據(jù)交流群:99918768

前言

最近在做機(jī)器學(xué)習(xí)下的人臉識(shí)別的學(xué)習(xí),機(jī)器學(xué)習(xí)這個(gè)東西有點(diǎn)暴力,很大程度上靠訓(xùn)練的數(shù)據(jù)量來(lái)決定效果。為了找數(shù)據(jù),通過(guò)一個(gè)博客的指導(dǎo),瀏覽了幾個(gè)很知名的數(shù)據(jù)集。

幾個(gè)大型數(shù)據(jù)集是通過(guò)發(fā)郵件申請(qǐng)進(jìn)行下載,幾個(gè)小型數(shù)據(jù)集直接在網(wǎng)頁(yè)的鏈接下載,還有一個(gè)Pubfig數(shù)據(jù)集則是提供了大量圖片的鏈接來(lái)讓我們自己寫(xiě)程序來(lái)下載。

權(quán)衡了數(shù)據(jù)量的需求,最后選擇Pubfig的數(shù)據(jù)集,于是就自己寫(xiě)了一個(gè)python圖片采集程序,里面用了urllib和requests兩種方法.

分析Pubfig提供的下載文件的特點(diǎn)

python爬取人臉識(shí)別圖片數(shù)據(jù)集/python爬去圖片/python爬蟲(chóng)
這個(gè)數(shù)據(jù)文件提供了在數(shù)據(jù)集中出現(xiàn)的所有人物
python爬取人臉識(shí)別圖片數(shù)據(jù)集/python爬去圖片/python爬蟲(chóng)
這個(gè)數(shù)據(jù)文件提供了每個(gè)人的urls

可以看出來(lái)這個(gè)數(shù)據(jù)集的處理其實(shí)非常簡(jiǎn)單了,可以通過(guò)readlines的方式存進(jìn)列表用空格分開(kāi)一下數(shù)據(jù)就可以把urls提取出來(lái)了。

處理一下urls文件

urls在文件的中后部,寫(xiě)個(gè)文件把它單純地提取出來(lái),方便使用。
我單獨(dú)把Miley_Cyrus的部分提取出來(lái)放了一個(gè)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)

# 寫(xiě)入到文件里面
with open('url.data', 'w') as f:
    for i in urls:
        f.write(i)
        f.write('\n')

爬取urls圖片

1. Urllibs方法

import urllib.request as request
import socket
import os

# 在同級(jí)目錄新建文件夾存圖片
os.mkdir('./img')

# 為請(qǐng)求增加一下頭
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)

# 設(shè)定一下無(wú)響應(yīng)時(shí)間,防止有的壞圖片長(zhǎng)時(shí)間沒(méi)辦法下載下來(lái)
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

# 通過(guò)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')

# 把沒(méi)有抓取到的urls保存起來(lái)
with open('bad_url3.data', 'w') as f:
    for i in bad_url:
        f.write(i)
        f.write('\n')
    print('saved bad urls')

2. Requests方法

import requests
import socket
import os

# 在同級(jí)目錄新建文件夾存圖片
os.mkdir('./img')

# 設(shè)定一下無(wú)響應(yīng)時(shí)間,防止有的壞圖片長(zhǎng)時(shí)間沒(méi)辦法下載下來(lái)
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

# 為請(qǐng)求增加一下頭,獲取圖片
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')

個(gè)人博客

8aoy1.cn

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI