从百度图库爬数据的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 |