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 
  • 相关阅读:
    PAT 甲级 1004 Counting Leaves
    C#列的一些操作
    EXT.NET 一些用法
    ext.net 所有版本
    鱼线拉力值
    CRM 总是弹出登录窗口
    台钓线组及各种绑法
    windows server 2012 r2 安装IIS失败
    [iOS]UITableView刷新
    [Linux]APUE读书笔记: 文件和目录
  • 原文地址:https://www.cnblogs.com/wjjcjj/p/12267814.html
Copyright © 2011-2022 走看看