python爬取百度图片

import requests
import os

# 进行数据爬取
def getPages(kw,num):
    # 循环页码数和 请求参数
    params = []
    for i in range(30,30*num+30,30):
        params.append({
            'tn': 'resultjson_com',
            'ipn': ' rj',
            'ct': '201326592',
            'is': ' ',
            'fp': 'result',
            'queryWord': kw,
            'cl': '2',
            'lm': '-1',
            'ie': 'utf-8',
            'oe': 'utf-8',
            'adpicid': ' ',
            'st': '-1',
            'z': ' ',
            'ic': ' ',
            'hd': ' ',
            'latest': ' ',
            'copyright': ' ',
            'word': kw,
            's': ' ',
            'se': ' ',
            'tab': ' ',
            'width': ' ',
            'height': ' ',
            'face': ' ',
            'istype': '2',
            'qc': ' ',
            'nc': '1',
            'fr': ' ',
            'expermode': ' ',
            'force': ' ',
            'cg': 'girl',
            'pn': i,
            'rn': '30',
            'gsm': ' ',
            '1575710003840': ' ',
        })

    # 请求的url
    url = 'https://image.baidu.com/search/acjson'
    # 循环请求
    urls = []
    for i in params:
        # 像每个url发起请求
        res = requests.get(url,params=i)
        # 获取请求的数据,加入urls里面
        urls.append(res.json()['data'])
    return urls

# 下载图片到本地
def downloadImg(datalist,dir):#dir是地址
    # 检测文件夹是否存在
    if not os.path.exists(dir):
        os.mkdir(dir)

    # 循环下载图片数据
    x = 0
    for data in datalist:
        for i in data:
            if i.get('thumbURL') != None:
                print(f'下载图片{i.get("thumbURL")}')
                # 像图片地址发起请求
                imgres = requests.get(i.get("thumbURL"))
                open(f'{dir}/{x}.jpg','wb').write(imgres.content)
                x += 1
    print(f'一共下载了{x}张图片')


# 获取用户输入信息
keyword = input('请输入搜索图片的关键字:')
# 调用函数,进行数据的爬取,可以指定关键字和下载页数
pagenum = input('请输入想要爬取多少页数据')
datalist = getPages(keyword,int(pagenum))#一页为30张图片
# 调用函数,保存数据  ,可以指定要保存的图片路径
downloadImg(datalist,'./baidu')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值