python学习-爬虫-百度自动图片下载

import re
import requests
import time

word = input("Input key word: ")   #input函数,其接受任意输入, 将所有输入默认为字符串处理,并返回字符串类型
#input函数,其接受任意输入, 将所有输入默认为字符串处理,并返回字符串类型
TotalNumber = int(input("How many picture do you want to download: "))   #定义一共需要下载的图片
url = 'http://image.baidu.com/search/flip?tn=baiduimage&ie=utf-8&word=' + word               #+ '&ct=201326592&v=flip'
#result = requests.get(url)
# &pn=20   后缀为20表示向后一页,40表示向后两页
PageNumber=0   #定义向后翻页
i = 1    #定义循环变量
while PageNumber< TotalNumber:        #while循环进行翻页
    urll = url + '&pn='+str(PageNumber)
    html = requests.get(urll).text  # requests一个对象,读取text属性
    pic_url = re.findall('"objURL":"(.*?)",', html, re.S)
    # pic_url = re.findall('data-objurl="(.*?)"',html,re.S)   #正则,找到
    #print(pic_url)
    for each in pic_url:     #for循环进行查找图片并下载记录
        print(each)
        try:
            pic = requests.get(each, timeout=10) #10s延迟,缓存图片
            # 再次通过request.get获得图片对于网址的对象,通过content返回数据流,即为图片
        except requests.exceptions.ConnectionError:
            print('【错误】当前图片无法下载')
            continue
        if i<=TotalNumber:   #判断是否下载了足够的图片
            string = 'picture' + str(i) + '.jpg'    #默认为当前程序所在文件夹,编号
            file = open(string, 'wb')
        # open函数,打开一个文件,并返回文件对象file,打开指定目录文件格式为f = open('D:/test.txt','r')  r为属性
        # “wb	以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。
        # 如果该文件不存在,创建新文件。一般用于非文本文件如图片等。”
            file.write(pic.content)  # file文件有很多属性,write将字符串写入文件,返回的为写入字符串长度
            file.close()
            i += 1
        else:
            print('\nCongratulations!The pictures have been downloaded')   #打印,程序下载完成
            time.sleep(300)
            exit()   #退出程序
    PageNumber += 20   #百度图片的页面中,下一页之后,都是20结尾

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值