Python爬虫之四:今日头条街拍美图

+ urlencode(paras)
try:
# 获取网页内容,返回json格式数据
response = requests.get(url)
# 通过状态码判断是否获取成功
if response.status_code == 200:
return response.text
return None
except RequestException:
return None

def parse_one_page(html):
'''
解析出组图网址,并将网页中所有图集的标题及图片地址返回
'''

urls = []
data = json.loads(html)
if data and 'data' in data.keys():
for item in data.get('data'):
page_urls = []
title = item.get('title')
image_detail = item.get('image_detail')
for i in range(len(image_detail)):
# 获取large图片地址
url = image_detail[i]['url']
# 替换URL获取高清原图
url = url.replace('large', 'origin')
page_urls.append(url)
urls.append({'title': title,'url_list': page_urls})
return urls

def save_image_file(url, path):
'''
保存图像文件
'''

ir = requests.get(url)
if ir.status_code == 200:
with open(path, 'wb') as f:
f.write(ir.content)
f.close()

def main(offset, word):
html = get_one_page(offset, word)
urls = parse_one_page(html)

# 图像文件夹不存在则创建
root_path = word
if not os.path.exists(root_path):
os.mkdir(root_path)

for i in range(len(urls)):
print('---正在下载 %s'%urls[i]['title'])
folder = root_path + '/' + urls[i]['title']
if not os.path.exists(folder):
try:
os.mkdir(folder)
except NotADirectoryError:
continue
except OSError:
continue

url_list = urls[i]['url_list']
for j in range(len(url_list)):
path = folder + '/index_' + str("%02d"%j) + '.jpg'
if not os.path.exists(path):
save_image_file(urls[i]['url_list'][j], path)

if __name__ == '__main__':
# 抓取2000个图集,基本上包含全部图集
for i in range(100):
main(i*20, '街拍')

可以根据自己喜好替换关键词下载你喜欢的图集。

Python爬虫之四:今日头条街拍美图



分享到:


相關文章: