python爬取4k高清壁纸(再也不怕没有壁纸了)

今天突然想换壁纸,在网上找了一圈没有找到满意的,正好学了爬虫,于是我就想把它们全都爬取下来,慢慢挑选。
这次爬取的目标是:彼岸图网动漫壁纸
在这里插入图片描述
接下来,我将详细讲解爬取过程:
首先点开网站,右键–检查 观察源码信息:
在这里插入图片描述
在这里插入图片描述
可以发现图片地址就是网站的域名加上上面的地址,接下来就是敲代码的事了。

观察可以发现图片总共134页:
在这里插入图片描述
但为了保证代码实用性,因为今天134页,明天就有可能135,甚至136页,所以首先提取壁纸页数,代码如下:

# 启始url
    url = 'http://pic.netbian.com/4kdongman/'
    req = requests.get(url, headers=headers)
    html = req.content.decode('gbk')
    # print(html)
    tree = etree.HTML(html)
    # 提取壁纸页数
    num = tree.xpath('//div[@class="page"]/a[last() - 1]/text()')[0]

接下来,得到所有页数的url:

    for i in range(int(num)):
        # 创建目录用于下载
        path = 'F:\\图片文件\\高清壁纸\\第{}页\\'.format(i + 1)
        if not os.path.exists(path):
            os.makedirs(path)
        # 改变当前工作目录
        os.chdir(path)
        print('----------第{}页---------正在下载-----'.format(i + 1))

        img_url = url + 'index_{}.html'.format(i + 1)
        if i == 0:
            img_url = url
        # print(img_url)

这样就可以对每一页的url请求得到每一张图片的url:

r = requests.get(img_url, headers=headers)
    html = r.content.decode('gbk')
    tree = etree.HTML(html)
    # 图片链接
    img_list = tree.xpath('//div[@id="main"]/div[@class="slist"]/ul/li/a/img/@src')
    # print(img_list, len(img_list))
    count = 1
    for img in img_list:
        img = 'http://pic.netbian.com' + img

接下来,就是下载了。
完整代码如下:

import requests
from lxml import etree
import os


headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Safari/537.36',
}


def download(img, count):
    r = requests.get(img, headers=headers)
    pic = r.content
    try:
        with open('{}.jpg'.format(count), 'wb') as f:
            f.write(pic)
            print('{}.jpg-----下载成功'.format(count))
    except:
        print('下载失败!')


def get_img(img_url):
    r = requests.get(img_url, headers=headers)
    html = r.content.decode('gbk')
    tree = etree.HTML(html)
    # 图片链接
    img_list = tree.xpath('//div[@id="main"]/div[@class="slist"]/ul/li/a/img/@src')
    # print(img_list, len(img_list))
    count = 1
    for img in img_list:
        img = 'http://pic.netbian.com' + img
        # 下载图片
        download(img, count)
        count = count + 1


def main():
    # 启始url
    url = 'http://pic.netbian.com/4kdongman/'
    req = requests.get(url, headers=headers)
    html = req.content.decode('gbk')
    # print(html)
    tree = etree.HTML(html)
    # 提取壁纸页数
    num = tree.xpath('//div[@class="page"]/a[last() - 1]/text()')[0]
    for i in range(int(num)):
        # 创建目录用于下载
        path = 'F:\\图片文件\\高清壁纸\\第{}页\\'.format(i + 1)
        if not os.path.exists(path):
            os.makedirs(path)
        # 改变当前工作目录
        os.chdir(path)
        print('----------第{}页---------正在下载-----'.format(i + 1))

        img_url = url + 'index_{}.html'.format(i + 1)
        if i == 0:
            img_url = url
        # print(img_url)
        # 获取图片链接
        get_img(img_url)


if __name__ == '__main__':
    main()
  • 4
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值