zoukankan      html  css  js  c++  java
  • 从百度图库爬数据的python实现

    # -*- coding: utf-8 -*-
    import re
    import sys
    import urllib
    import requests
    
    def get_onepage_urls(onepageurl):
        if not onepageurl:
            print('已到最后一页, 结束')
            return [], ''
        try:
            html = requests.get(onepageurl)
            html.encoding = 'utf-8'
            html = html.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=15)
                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.parse.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('第页' % str(fanye_count))
            if fanye_url == '' and onepage_urls == []:
                break
            all_pic_urls.extend(onepage_urls)
    
        down_pic(list(set(all_pic_urls)))

     关键词:

    戴眼镜的人
    done
    戴眼镜的学生
    done
    戴眼镜的小孩 done
    戴眼镜的小女孩头像 done
    复古圆眼镜女生头像 done
    可爱圆眼镜女生头像 done
    戴眼镜很美的女生 done
    戴眼镜的帅哥 done
    普通男生生活照戴眼镜 done
    戴眼镜男头像真人 done 
    戴眼镜中年人 done
    戴眼镜的明星 done
    白敬亭戴眼镜 done 
    戴方框眼镜的人 done 
    戴眼镜的外国人 done
    戴眼镜老年人 done
    老年人戴眼镜图片 done 
    戴近视眼镜的 done 
    戴老婆2千度近视眼镜 done 
    超级大框眼镜 done 
    无框眼镜女士 done 
    无框眼镜男生 done 
    金丝框眼镜男生 done 
    比较潮的眼镜框男生 done
    复古眼镜 done 
    复古半框眼镜 done 
    戴老花镜老年人 done 
  • 相关阅读:
    前端之JQuery:JQuery文档操作
    前端之JQuery:JQuery属性操作
    前端之JQuery:JQuery基本语法
    前端之JavaScript:JS之DOM对象三
    前端之JavaScript:JS之DOM对象二
    初始django
    mysql 索引
    多表查询
    单表查询
    外键的三种形式
  • 原文地址:https://www.cnblogs.com/wjjcjj/p/12267814.html
Copyright © 2011-2022 走看看