美文网首页
Python爬取图片练习

Python爬取图片练习

作者: 十月石榴2013 | 来源:发表于2017-11-26 11:38 被阅读110次

    项目遇到瓶颈,所以上周的学习笔记也没有写。周五周六花了两天,打算看一下python调节一下心情。
    Python语言创始于1989年,是一门脚本语言,在数据处理方面很有优势。
    Python是一个轻量级工具,安装很方便。Windows下安装见教程:
    https://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/001374738150500472fd5785c194ebea336061163a8a974000
    linux自带python。
    目前有python3和Python2两个版本,我使用的是python2.7,安装完之后,需要设置环境变量,或者干脆将C:\Python\python.exe复制到C:\Windows\System32,但这使得使用pip工具有点麻烦,需要进入C:\Python\Script\目录。
    下面是一段从百度图片上爬取图片的练习代码,在某个目录中输入:python paqutupian.py [keyword] [number of picture] 就能在当前文件夹下爬取[number of picture]张[keyword]的图。
    参考资料:
    慕课网——北京理工大学python系列教程
    voidsky_很有趣儿:http://www.jianshu.com/p/19c846daccb3
    Cloudox_:http://blog.csdn.net/cloudox_/article/details/53465923
    浮图糊涂:http://blog.csdn.net/qq_35028612/article/details/72810884
    蓝闪:https://www.cnblogs.com/stan-si/archive/2017/03/02/6484146.html

    # Download pictures from image.baidu
    # referrance:
    #   MOOC
    #   http://www.jianshu.com/p/19c846daccb3
    #   http://blog.csdn.net/cloudox_/article/details/53465923
    #   http://blog.csdn.net/qq_35028612/article/details/72810884
    #   https://www.cnblogs.com/stan-si/archive/2017/03/02/6484146.html
    
    import requests     # 抓取网页的第三方库
    import urllib       # 抓取网页的另一种库
    import re           # 正则表达式的库
    import os           # 操作系统调用的库
    import string       # 字符串处理的库
    from sys import argv # 获取命令行输入参数的库
    
    # argv[0] 是函数文件的名字,此处就是paqutupian.py
    keyword = argv[1]   # 获取第一个参数
    NUMBER = int(argv[2])   # 获取第二个参数
    root = os.getcwd()+'\\'+ keyword + '\\'  # 保存路径为当前目录+以关键词命名的文件夹
    if not os.path.exists(root):
        os.mkdir(root)      # 创建文件夹
    i = 0   # page i
    num = 0
    while num <= NUMBER:
        # 百度图片的网址的特点如下:Word = 关键词、pn = 20*页数;
        url = "http://image.baidu.com/search/flip?tn=baiduimage&ie=utf-8&word="+keyword+"&pn="+str(20*i)+"&gsm=64&ct=&ic=0&lm=-1&width=0&height=0"
        page = urllib.urlopen(url)
        html = page.read()
        # 以上这段的意思相当于右键网页,查看源代码
        reg = 'objURL":"(.*?)"'    # 模糊匹配,找objURL":" 与 " 中间的部分 
        imgre = re.compile(reg)    # 不知道在干嘛 
        imglist = re.findall(imgre, html)   
        for imgurl in imglist:
            num=num+1
            if num <= NUMBER:
                print imgurl
                try:
                    pic= requests.get(imgurl, timeout=10)       # 访问图片的地址
                except : #requests.exceptions.ConnectionError:
                    print '[EEROR] can not download the picture...'
                    continue
                # 以下部分为把图片保存在文件夹中
                name = str(num) + ".jpg" 
                string = root + name
                if not os.path.exists(string):
                    fp = open(string,'wb')
                    fp.write(pic.content)   # pic.content 指pic这网页的二进制形式
                    fp.close()
            else :
                break
        i = i+1  
    

    相关文章

      网友评论

          本文标题:Python爬取图片练习

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