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 
  • 相关阅读:
    数据库遇到的2个奇葩的事情
    虚IP解决程序连只读服务器故障漂移
    SQL Server 主库DML操作慢故障处理过程
    优雅地使用pt-archiver进行数据归档(转)
    Mysql表读写、索引等操作的sql语句效率优化问题
    MySQL Performance-Schema(一) 配置篇
    MySQL Performance-Schema(三) 实践篇
    MySQL Performance-Schema(二) 理论篇
    MySQL案例-并行复制乱序提交引起的同步异常
    (转)MySQL- 5.7 sys schema笔记,mysql-schema
  • 原文地址:https://www.cnblogs.com/wjjcjj/p/12267814.html
Copyright © 2011-2022 走看看