前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >爬虫实例十六:python爬取高质量美女壁纸

爬虫实例十六:python爬取高质量美女壁纸

原创
作者头像
远方的星
修改2021-08-05 09:56:29
7730
修改2021-08-05 09:56:29
举报
文章被收录于专栏:学习笔记(宝藏)

前言

好久没有更新壁纸库,这些天就填充一点壁纸好了!

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

针对自己以前爬取壁纸经验,有一个很大的缺点:

  • 图片分辨率不统一,即使统一了,也很少有符合自己电脑的(2160x1440)分辨率

那么今天就来实现一个可以自己控制分辨率的壁纸爬虫脚本。

在这里插入图片描述
在这里插入图片描述

一、导入的库

  • 这些是脚本代码所用到的库
代码语言:txt
复制
import os
import json
import chardet
import logging
import requests
from tqdm import tqdm
from fake_useragent import UserAgent

没有的库,及时下载嗷。

还有一个库,pprint,在写爬虫的过程中也起到了很重要的作用。

它可以工整地输出json数据。

二、页面分析

目标网址:http://www.jijianzy.com/bz/

进入页面,按如下操作

在这里插入图片描述
在这里插入图片描述

接下来进入一个全新的页面,接着打开抓包工具,选择XHR,并且不要刷新!不要刷新!不要刷新! 然后开始下拉。

在这里插入图片描述
在这里插入图片描述

每次下滑到一定程度,就会多出来一个包。

里面装的就是壁纸啦!

点击一个查看详情

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

最上面和最下面有我们想要的信息。

然后就可以构建url和param了。

代码语言:txt
复制
url = 'http://www.jijianzy.com/bz/api.php?'
代码语言:txt
复制
param = {
       'cid': '6',
       'start': '30',
       'count': '30'
    }
  • 之前,我也有写过关于json数据的爬取,有兴趣的小伙伴可以去看看

python爬虫随心所欲地爬取百度图片

三、完整代码

  • 这里面有详细的注释嗷
代码语言:txt
复制
# -*- coding: UTF-8 -*-
"""
@Author  :远方的星
@Time   : 2021/5/21 10:26
@CSDN    :https://blog.csdn.net/qq_44921056
@腾讯云   : https://cloud.tencent.com/developer/column/91164
"""
import os
import json
import chardet
import logging
import requests
from tqdm import tqdm
from fake_useragent import UserAgent

# 随机产生请求头
ua = UserAgent(verify_ssl=False, path='fake_useragent.json')

# 日志输出的基本配置
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s: %(message)s')

# 创建一个文件夹
path = 'D:/极简壁纸'
if not os.path.exists(path):
    os.mkdir(path)


# 随机切换请求头
def random_ua():
    headers = {
        "user-agent": ua.random
    }
    return headers


# 获取图片url
def get_imgae_url(url, start, display):
    # cid=6代表《美女模特》页面
    param = {
        'cid': '6',
        'start': start,
        'count': '30'
    }
    response = requests.get(url=url, headers=random_ua(),params=param)
    # 自动转换编码,与网页一致
    response.encoding = chardet.detect(response.content)['encoding']
    # 获取页面内容
    response = response.text
    # 将内容转换成json格式
    data_s = json.loads(response)
    # 提取data里的数据
    a = data_s["data"]
    # 定义一个空列表,用来放图片url
    url_list = []
    for i in range(len(a)):
        # 提取其中key值为"img_1280_800"的数据(提取其它的类似数据也一样)
        data = a[i].get("img_1280_800", "not exist")
        # 切割字符串
        b = data.split('/')
        # 将图片改为想要设置的格式
        b[4] = '{}_100'.format(display)
        # 拼接字符串,得到图片url
        image_url = '/'.join(b)
        url_list.append(image_url)
    return url_list


# 下载图片
def download_image(url):
    num = 1
    logging.info('您的需求我已经收到啦,很快就能帮你完成嗷,请稍等一会会。。。。')
    for i in tqdm(range(len(url))):
        image_url = url[i]
        image_data = requests.get(url=image_url, headers=random_ua()).content
        image_name = '{}.png'.format(num)
        save_path = path + '/' + image_name
        with open(save_path, 'wb') as f:
            f.write(image_data)
        num += 1
    logging.info('任务已完成!感谢您的使用!')


def main():
    url = 'http://www.jijianzy.com/bz/api.php?'
    page = input('请输入您想要爬取的页数:')
    display = input('请输入您想要的图片分辨率(格式为1920_1080):')
    page = int(page) + 1
    start = 0  # 起步为0,每一组图片加30
    url_list_s = []  # 定义一个空列表装url
    for m in range(1, page):  # 多页下载
        url_list = get_imgae_url(url, start, display)
        url_list_s += url_list
        start += 30
    download_image(url_list_s)


if __name__ == '__main__':
    main()

四、结果展示

文章开头不是有结果?

什么?还不够!!!

好叭,再来一点!

在这里插入图片描述
在这里插入图片描述

pycharm的背景设置,可以参考:PyCharm自定义背景图片、更换主题

在这里插入图片描述
在这里插入图片描述

五、Blogger’s speech

如有不足,还请大佬评论区留言或私信我,我会进行补充。

感谢您的支持,希望可以点赞,关注,收藏,一键三连哟。

作者:远方的星 CSDN:https://blog.csdn.net/qq_44921056

腾讯云:https://cloud.tencent.com/developer/column/91164

本文仅用于交流学习,未经作者允许,禁止转载,更勿做其他用途,违者必究。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 一、导入的库
  • 二、页面分析
  • 三、完整代码
  • 四、结果展示
    • 五、Blogger’s speech
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档