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 
  • 相关阅读:
    linux性能调优总结
    mongodb之sharding原理
    Centos6.6搭建mongodb3.2.6副本集分片
    vmstat 命令详解
    SaltStack之Targeting
    saltstack之pillar详解
    saltstack之grains详解
    saltstack之yum简单部署lnmp
    Redis监控工具
    PHP实现选择排序
  • 原文地址:https://www.cnblogs.com/wjjcjj/p/12267814.html
Copyright © 2011-2022 走看看