美文网首页人脸识别爬虫
python爬取人脸识别图片数据集/python爬去图片/pyt

python爬取人脸识别图片数据集/python爬去图片/pyt

作者: YuboonaZhang | 来源:发表于2018-02-03 11:28 被阅读431次

    本人长期出售超大量微博数据、旅游网站评论数据,并提供各种指定数据爬取服务,Message to YuboonaZhang@Yahoo.com。同时欢迎加入社交媒体数据交流群:99918768

    前言

    最近在做机器学习下的人脸识别的学习,机器学习这个东西有点暴力,很大程度上靠训练的数据量来决定效果。为了找数据,通过一个博客的指导,浏览了几个很知名的数据集。

    几个大型数据集是通过发邮件申请进行下载,几个小型数据集直接在网页的链接下载,还有一个Pubfig数据集则是提供了大量图片的链接来让我们自己写程序来下载。

    权衡了数据量的需求,最后选择Pubfig的数据集,于是就自己写了一个python图片采集程序,里面用了urllib和requests两种方法.

    分析Pubfig提供的下载文件的特点

    peoplepeople

    这个数据文件提供了在数据集中出现的所有人物


    urlsurls

    这个数据文件提供了每个人的urls

    可以看出来这个数据集的处理其实非常简单了,可以通过readlines的方式存进列表用空格分开一下数据就可以把urls提取出来了。

    处理一下urls文件

    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')
    
    

    爬取urls图片

    1. Urllibs方法

    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')
    
    

    2. Requests方法

    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

    相关文章

      网友评论

        本文标题:python爬取人脸识别图片数据集/python爬去图片/pyt

        本文链接:https://www.haomeiwen.com/subject/hqcuzxtx.html