大数据采集之python爬取人脸识别图片数据集/python爬去图片/python爬虫
沉沙 2019-01-18 来源 : 阅读 1272 评论 0

摘要:本篇教程探讨了大数据采集之python爬取人脸识别图片数据集/python爬去图片/python爬虫,希望阅读本篇文章以后大家有所收获,帮助大家对相关内容的理解更加深入。

本篇教程探讨了大数据采集之python爬取人脸识别图片数据集/python爬去图片/python爬虫,希望阅读本篇文章以后大家有所收获,帮助大家对相关内容的理解更加深入。

大数据采集之python爬取人脸识别图片数据集/python爬去图片/python爬虫


最近在做机器学习下的人脸识别的学习,机器学习这个东西有点暴力,很大程度上靠训练的数据量来决定效果。

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

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

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


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

这个数据文件提供了每个人的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 requestimport socketimport 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 = 20socket.setdefaulttimeout(timeout)# 从文件里面读urlsurls = []with open('./url.data') as f:    for i in f.readlines():        if i != '':            urls.append(i)        else:            pass# 通过urllibs的requests获取所有的图片count = 1bad_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 requestsimport socketimport os# 在同级目录新建文件夹存图片os.mkdir('./img')# 设定一下无响应时间,防止有的坏图片长时间没办法下载下来timeout = 20socket.setdefaulttimeout(timeout)# 从文件里面读urlsurls = []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 = 1for 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')

   

本文由职坐标整理发布,学习更多的相关知识,请关注职坐标IT知识库!

本文由 @沉沙 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程