前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >这些图片太漂亮,想要,一个一个下载好慢,怎么破,在线等,急!!!!

这些图片太漂亮,想要,一个一个下载好慢,怎么破,在线等,急!!!!

作者头像
大家一起学编程
发布2021-03-27 16:07:58
3070
发布2021-03-27 16:07:58
举报

兴趣是最好的老师,突然的心血来潮,想换壁纸,在网上转了一圈好多漂亮的图片,点击进入,下载,好!一张壁纸下载完成。我想多下载几张,怎么破,在线等!急!!!!!

目标图片

壁纸到处都是,但是通常我们想到的都是某度的图片,请原谅我这次!打开输入框,搜索,壁纸,好,好,就是你,第一个链接,点进去,成功打入壁纸大军内部,紧张,兴奋。很好,你已经成功的引起了某度服务器的注意。为自己先点个赞!

解决思路

首先我想到的是获取当前页面的url,然后利用正则去获取图片的url,这种方式的去是可以,但是只能获取到一页的图片,大概30张。也是不小的收获。

第二,F12打开开发者工具,进行查看,发现一个特殊的接口,我当时都蒙了,图片的url怎么全在这里。

我花了半天的时间通过正则获取到的url这么没用。

很好,这个接口成功的引起了我的注意。

获取到url,那接下来的事就不难了。鼓掌

代码实现

代码这块的思路,因为需要获取网页内容,调用接口,这里我们使用requests模块,当然有其他的模块也是可以的。只要能解决问题。

导入import requests

既然有 接口,就有参数,那来看一下:

代码语言:javascript
复制
https://image.baidu.com/search/acjson

参数

代码语言:javascript
复制
{
    'tn': 'resultjson_com',
    'ipn': 'rj',
    'ct': 201326592,
    'is': '',
    'fp': 'result',
    'queryWord': keyword,#控制搜索关键字
    'cl': 2,
    'lm': -1,
    'ie': 'utf-8',
    'oe': 'utf-8',
    'adpicid': '',
    'st': -1,
    'z': '',
    'ic': 0,
    'word': keyword,#控制搜索关键字
    's': '',
    'se': '',
    'tab': '',
    'width': "",
    'height': "",
    'face': 0,
    'istype': 2,
    'qc': '',
    'nc': 1,
    'fr': '',
    'pn': i,#控制页数
    'rn': 30,
    'gsm': '1e',
    '1488942260214': ''
}

剩下的事还难吗?接着看:

请求接口,并用json格式返回。

代码语言:javascript
复制
tp=requests.get(url,params=j,headers=header).json()

然后下载

代码语言:javascript
复制
with open(str(int(time.time()))+".jpg","wb") as f:

搞定,来看完整代码:

代码语言:javascript
复制
import requests
import time


def getManyPages(keyword,pages):#(关键词,需要页数)。
    params=[]
    header={"User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36"}
    for i in range(30,30*pages+30,30):
        params.append({
            'tn': 'resultjson_com',
            'ipn': 'rj',
            'ct': 201326592,
            'is': '',
            'fp': 'result',
            'queryWord': keyword,#控制搜索关键字
            'cl': 2,
            'lm': -1,
            'ie': 'utf-8',
            'oe': 'utf-8',
            'adpicid': '',
            'st': -1,
            'z': '',
            'ic': 0,
            'word': keyword,#控制搜索关键字
            's': '',
            'se': '',
            'tab': '',
            'width': "",
            'height': "",
            'face': 0,
            'istype': 2,
            'qc': '',
            'nc': 1,
            'fr': '',
            'pn': i,#控制页数
            'rn': 30,
            'gsm': '1e',
            '1488942260214': ''
        })
    url = 'https://image.baidu.com/search/acjson'
    urls = []
    for j in params:
        tp=requests.get(url,params=j,headers=header).json()
        for y in range(0,30):
            url2=tp.get('data')[y]["middleURL"]
            tp2 = requests.get(url2).content
            time.sleep(1)#停顿一秒钟,是为了用时间戳来命名
          with open(str(int(time.time()))+".jpg","wb") as f:
                f.write(tp2)

if __name__=="__main__":
    getManyPages("高清 动漫",1)#(关键词,需要页数)。

注:电脑观看效果更佳!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-10-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大家一起学编程 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云开发 CLI 工具
云开发 CLI 工具(Cloudbase CLI Devtools,CCLID)是云开发官方指定的 CLI 工具,可以帮助开发者快速构建 Serverless 应用。CLI 工具提供能力包括文件储存的管理、云函数的部署、模板项目的创建、HTTP Service、静态网站托管等,您可以专注于编码,无需在平台中切换各类配置。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档