#!/usr/bin/env python2.7
# coding:utf-8
import re,sys,urllib,requests,os
def get_onepage_urls(onepageurl):
'''
获取当前页面所有图片的url 和 下一页的url
'''
if not onepageurl:
print '已经是最后一页!'
return [],''
try:
html = requests.get(onepageurl).text
except Exception as e:
print e
pic_urls = []
next_url = ''
return pic_urls,next_url
pic_urls = re.findall('"objURL":"(.*?)",', html, re.S)
next_urls = re.findall(re.compile(r'<a href="(.*)" class="n">下一页</a>'), html, flags=0)
next_url = 'http://image.baidu.com' + next_urls[0] if next_urls else ''
return pic_urls,next_url
def down_pic(pic_urls):
'''
通过图片链接列表,下载所有的图片
'''
path="images"
if(os.path.exists(path)==False):
os.makedirs(path)
for i,pic_url in enumerate(pic_urls):
try:
pic = requests.get(pic_url,timeout = 15)
string =path+"/"+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&word= '
url_init = url_init_first + urllib.quote(keyword,safe='/')
all_pic_urls = []
onepage_urls,next_url = get_onepage_urls(url_init)
all_pic_urls.extend(onepage_urls)
next_count = 0 #初始化翻页数
while 1:
onepage_urls,next_url = get_onepage_urls(next_url)
next_count += 1
print '第 %s页' % next_count
if next_url == '' and onepage_urls == []:
break
all_pic_urls.extend(onepage_urls)
down_pic(list(set(all_pic_urls)))
Python爬取网页图片03
猜你喜欢
转载自blog.csdn.net/u011106915/article/details/78357477
今日推荐
周排行