玩转人工智能(9)使用python爬取X度中国人脸图片,构建人脸识别数据库



本文介绍使用pythonX度的图像库爬取特定种类的图片资源。

工具准备:

1、安装python,路劲:https://www.python.org/

 

选择自己喜欢的版本即可,本人使用3.5.4实验。

注意在安装过程中勾选PATH路劲设置。

安装成功后的图如下所示

 

2、使用PIP下载requests库(URL访问用)

pythonPIP安装路径下CMD

 

 

输入:pip install requests

安装成功后,在python的编辑器下运行import requests,结果如下,表示request库导入成功。

 

 

  1. 打开file编辑器,导入代码

     

    运行,调试。遇到问题Google、百度即可解决。

  2. 百度的URL链接如下:

    https://image.baidu.com/search/index?tn=baiduimage&ipn=r&ct=201326592&cl=2&lm=-1&st=-1&fm=result&fr=&sf=1&fmq=1523427896897_R&pv=&ic=0&nc=1&z=&se=1&showtab=0&fb=0&width=&height=&face=0&istype=2&ie=utf-8&word=%E4%B8%AD%E5%9B%BD%E7%94%B7%E4%BA%BA%E8%84%B8

    图示如下:

     

    按照人的搜索习惯,这里预置了关键词,比如“中国男人脸”等字样。对于到python的脚本中在代码43

     

    每次搜索的时候手工预置条件即可。否则搜索出的内容不一定是我们需要的结果。

  3. 程序运行后图片下载到程序当前文件夹下,需要重新拷贝到自命名文件下。

     

    全部拷进去,如果觉得麻烦,在代码中设置文件夹路径即可。

    原始代码:

    # coding=utf-8

    """根据特定搜索词下载百度图片"""

    import re

    import sys

    import urllib

    import requests

     

     

    def get_onepage_urls(onepageurl):

        """获取单个翻页的所有图片的urls+当前翻页的下一翻页的url"""

        if not onepageurl:

            print('已到最后一页, 结束')

            return [], ''

        try:

            html = requests.get(onepageurl).text

        except Exception as e:

            print(e)

            pic_urls = []

            fanye_url = ''

            return pic_urls, fanye_url

        pic_urls = re.findall('"objURL":"(.*?)",', html, re.S)

        fanye_urls = re.findall(re.compile(r'<a href="(.*)" class="n">下一页</a>'), html, flags=0)

        fanye_url = 'http://image.baidu.com' + fanye_urls[0] if fanye_urls else ''

        return pic_urls, fanye_url

     

     

    def down_pic(pic_urls):

        """给出图片链接列表, 下载所有图片"""

        for i, pic_url in enumerate(pic_urls):

            try:

                pic = requests.get(pic_url, timeout=20)

                string = str(i + 1) + '.jpg'

                with open(string, 'wb') as f:

                    f.write(pic.content)

                    print('成功下载第%s张图片: %s' % (str(i + 1), str(pic_url)))

            except Exception as e:

                print('下载第%s张图片时失败: %s' % (str(i + 1), str(pic_url)))

                print(e)

                continue

     

     

    if __name__ == '__main__':

        keyword = '中国男人脸'  # 关键词, 改为你想输入的词即可, 相当于在百度图片里搜索一样

        url_init_first = r'http://image.baidu.com/search/flip?tn=baiduimage&ipn=r&ct=201326592&cl=2&lm=-1&st=-1&fm=result&fr=&sf=1&fmq=1497491098685_R&pv=&ic=0&nc=1&z=&se=1&showtab=0&fb=0&width=&height=&face=0&istype=2&ie=utf-8&ctd=1497491098685%5E00_1519X735&word='

        url_init = url_init_first + urllib.request.quote(keyword, safe='/')

        all_pic_urls = []

        onepage_urls, fanye_url = get_onepage_urls(url_init)

        all_pic_urls.extend(onepage_urls)

     

        fanye_count = 0  # 累计翻页数

        while 1:

            onepage_urls, fanye_url = get_onepage_urls(fanye_url)

            fanye_count += 1

            print('%s' % fanye_count)

            if fanye_url == '' and onepage_urls == []:

                break

            all_pic_urls.extend(onepage_urls)

     

        down_pic(list(set(all_pic_urls)))

     

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值