从豆瓣爬取并下载对应关键字的全部图片(以周杰伦为例)

源码

import requests
import json

def download(src, id):
    dir = './' + str(id) + '.jpg'
    try:
        pic = requests.get(src, timeout=10)
    except requests.exceptions.ConnectionError:
        # print 'error, %d 当前图片无法下载', %id
        print('图片无法下载')
    fp = open(dir, 'wb')
    fp.write(pic.content)
    fp.close()

def loop_request(total, text):
    for i in range(0, total, 20):
        url = 'https://www.douban.com/j/search_photo?q=' + text + '&limit=20&start=' + str(i)
        html = requests.get(url).text  # 得到返回结果
        response = json.loads(html, encoding='utf-8')  # 将JSON格式转换成Python对象
        for image in response['images']:
            print('downloading ' + image['src'])
            # 查看当前下载的图片网址
            download(image['src'], image['id'])  # 下载一张图片

def get_count(text):
    url = 'https://www.douban.com/j/search_photo?q=' + text + '&limit=20&start=1'
    html = json.loads(requests.get(url).text, encoding='utf-8')
    print(html)
    print(html['total'])
    loop_request(html['total'], text)

get_count('周杰伦')

简要说明

  • 其中包含三个函数
  • get_count用于获取该关键字对应图片的数量
  • loop_request根据图片总数量,20个一组获取图片
  • download下载图片并根据id保存至本地

环境介绍

  • python版本 3.0+
  • 开发工具 PyCharm

END

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值